dict中的key有序or无序 ?
本帖最后由 paypojie 于 2022-10-7 19:21 编辑如标题那样 想知道key是有序还是无序
廖雪峰的官方网站是这样介绍的 请看截图
不知道是不是python版本的问题 我的运行结果是这样的
代码:
d1 = dict([('a',1),('b',2),('c',3)])
print(d1)
from collections import OrderedDict
d2 = OrderedDict([('a',1),('b',2),('c',3)])
print(d2)
for k,v in d2.items():
print(k,v)
执行了多遍 发现dict()函数创建的字典是有序的
cmd也是这样的
猜测: 是不是在比较新的python版本中 dict函数创建的字典是有序的 就和用OrderedDict()函数创建的是一样的 dict([('a',1),('c',2),('b',3)]) zhangzhequan 发表于 2022-10-7 19:22
paypojie 发表于 2022-10-7 19:25
字典的key, 默认的是字典序 我不怎么常用python的OrderedDict类,可能理解也不到位。
不过不管是dict还是OrderedDict类本身都不是自动排序吧,要排序的话用sorted()
import collections
d1 = dict([('e', 10), ('cats', 4), ('dogs', 8), ('a',1),('b',2),('c',3)])
collections.OrderedDict(sorted(d1.items()))
这样会不会比较好 愚者—我 发表于 2022-10-7 19:33
字典的key, 默认的是字典序
还是无法理解字典序是啥{:301_999:} 版本问题,我记得某个版本的Python字典变有序了(好像是3.8?),但仅限于创建字典的时候的顺序。如果增加键值对,顺序还是会乱。 sapin 发表于 2022-10-7 19:35
我不怎么常用python的OrderedDict类,可能理解也不到位。
不过不管是dict还是OrderedDict类本身都不是自 ...
用sorted的话排序是 a b c 这种样子但是不用sorted的话还是按照定义好的dict的顺序的呀 hrpzcf 发表于 2022-10-7 19:41
版本问题,我记得某个版本的Python字典变有序了(好像是3.8?),但仅限于创建字典的时候的顺序。如果增加 ...
晚上有时间的话测试一下你说的这种 paypojie 发表于 2022-10-7 19:46
晚上有时间的话测试一下你说的这种
利用这个特性,我对字典排序的时候是先获取原字典的tiems列表,排序,然后用该列表创建新字典