吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3556|回复: 10
收起左侧

[讨论] python 中的字典和集合属不属于序列?

[复制链接]
MyModHeaven 发表于 2021-11-22 14:43
本帖最后由 MyModHeaven 于 2021-11-22 16:45 编辑

无论是python的入门书还是网上的资料,在介绍序列时,都有列表、元组、字典和集合。也有这样的分类:字典、集合是无序序列,列表、字符串、元组是有序序列;列表、字典、集合是可变序列,元组、字符串是不可变序列。

但是,在python的官方文档中(内置类型 — Python 3.10.0 文档):

1.png

2.png

序列分为:列表、元组、range对象、字符串、二进制序列类型,而集合和字典分别属于集合类型和映射类型。序列、映射、集合同属于python的内置类型,应该是平级关系。


前后不是矛盾的吗?








多谢各位热心的吾友解答,通过翻阅官方文档,总结一下:

3.png

首先,我的问题是:字典和集合是不是属于序列。大部分回复的都没有提到这个问题,而是在说字典现在是有序的了。我认为不属于。

总结一下字典的顺序问题:

字典会保留插入时的顺序。 请注意对键的更新不会影响顺序。 删除并再次添加的键将被插入到末尾。


像列表一样,但是元素的顺序不能通过不删除的手段改变。因为,即使字典是有序的,它也没有索引,因为,dict[] 是用键来召唤的值,而不是索引,但是用索引召唤值用的也是 [],所以可以理解为在字典里,召唤神龙的手段,键 技高一筹,覆盖了索引的能量。在字典的世界里,想要排序向前进一步,只能靠继承,前面的元素被删除了,后面的才有希望提高排名,后来居上的情况不存在。


因为字典不属于序列,所以可变序列的pop(), reverse(), remove(), insert() 等方法都不能用,删除元素只能使用 del 语句,逆序用 reversed() 函数

免费评分

参与人数 1吾爱币 +1 收起 理由
a3586597 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kafei000 发表于 2021-11-22 14:54
你把你发的第一段话里面得到”序列“变成”数据结构“,就可以看懂了。
字典、集合是无序序列(无序的数据结构),列表、字符串、元组是有序序列(有序的数据结构);列表、字典、集合是可变序列(可变的数据结构),元组、字符串是不可变序列(不可变的数据结构)。

其实官方文档更加严谨。一些书难免有主观性的描述,官网文件就算有歧义,也可以经过讨论得到最终结果,能够给出解释
所有以官方文档为准
RobinZhang 发表于 2021-11-22 14:54
这个不太懂啊,最近我也在学习py,我感觉字典和集合是属于序列的,查了很多,基本都是这么说的。
kiopc 发表于 2021-11-22 15:02
kafei000 发表于 2021-11-22 14:54
你把你发的第一段话里面得到”序列“变成”数据结构“,就可以看懂了。
字典、集合是无序序列(无序的数据 ...

我觉得数组会更加贴切一些,比如说:字典、集合是无序数组
zxc9989 发表于 2021-11-22 15:03
字典3.6之后是有序的
pzx521521 发表于 2021-11-22 15:17
翻译问题
官网对序列的定义 是有序的列表
各种书中对序列的定义 基于array的数据类型
xh44113 发表于 2021-11-22 15:24
我是按刮号去理解 字典 序列 []{}()
付叔叔慢慢老i 发表于 2021-11-22 15:25
说的很好,支持。。。。
whlee 发表于 2021-11-22 16:05
在python中,字典和集合是无序的。虽然python3.6之后字典是有序的,但在定义上仍然是无序的。如果按照有序的对待,会因版本问题导致错误。所以不建议把字典当做有序的来处理。本质上来看,还是从数据结构出发来理解好一些,这个根本问题解决了,其他问题就解决了。
snlyufo666 发表于 2021-11-22 16:40
最近看的python书上没提到这个。是我不会了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 19:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表