python 中的字典和集合属不属于序列?
本帖最后由 MyModHeaven 于 2021-11-22 16:45 编辑无论是python的入门书还是网上的资料,在介绍序列时,都有列表、元组、字典和集合。也有这样的分类:字典、集合是无序序列,列表、字符串、元组是有序序列;列表、字典、集合是可变序列,元组、字符串是不可变序列。
但是,在python的官方文档中(内置类型 — Python 3.10.0 文档):
序列分为:列表、元组、range对象、字符串、二进制序列类型,而集合和字典分别属于集合类型和映射类型。序列、映射、集合同属于python的内置类型,应该是平级关系。
前后不是矛盾的吗?
https://static.52pojie.cn/static/image/hrline/1.gif
多谢各位热心的吾友解答,通过翻阅官方文档,总结一下:
首先,我的问题是:字典和集合是不是属于序列。大部分回复的都没有提到这个问题,而是在说字典现在是有序的了。我认为不属于。
总结一下字典的顺序问题:
字典会保留插入时的顺序。 请注意对键的更新不会影响顺序。 删除并再次添加的键将被插入到末尾。
像列表一样,但是元素的顺序不能通过不删除的手段改变。因为,即使字典是有序的,它也没有索引,因为,dict[] 是用键来召唤的值,而不是索引,但是用索引召唤值用的也是 [],所以可以理解为在字典里,召唤神龙的手段,键 技高一筹,覆盖了索引的能量。在字典的世界里,想要排序向前进一步,只能靠继承,前面的元素被删除了,后面的才有希望提高排名,后来居上的情况不存在。
因为字典不属于序列,所以可变序列的pop(), reverse(), remove(), insert() 等方法都不能用,删除元素只能使用 del 语句,逆序用 reversed() 函数 你把你发的第一段话里面得到”序列“变成”数据结构“,就可以看懂了。
字典、集合是无序序列(无序的数据结构),列表、字符串、元组是有序序列(有序的数据结构);列表、字典、集合是可变序列(可变的数据结构),元组、字符串是不可变序列(不可变的数据结构)。
其实官方文档更加严谨。一些书难免有主观性的描述,官网文件就算有歧义,也可以经过讨论得到最终结果,能够给出解释
所有以官方文档为准 这个不太懂啊,最近我也在学习py,我感觉字典和集合是属于序列的,查了很多,基本都是这么说的。 kafei000 发表于 2021-11-22 14:54
你把你发的第一段话里面得到”序列“变成”数据结构“,就可以看懂了。
字典、集合是无序序列(无序的数据 ...
我觉得数组会更加贴切一些,比如说:字典、集合是无序数组 字典3.6之后是有序的 翻译问题
官网对序列的定义 是有序的列表
各种书中对序列的定义 基于array的数据类型 我是按刮号去理解 字典 序列 []{}()
说的很好,支持。。。。 在python中,字典和集合是无序的。虽然python3.6之后字典是有序的,但在定义上仍然是无序的。如果按照有序的对待,会因版本问题导致错误。所以不建议把字典当做有序的来处理。本质上来看,还是从数据结构出发来理解好一些,这个根本问题解决了,其他问题就解决了。 最近看的python书上没提到这个。{:1_896:}是我不会了。
页:
[1]
2