甜萝 发表于 2022-10-7 19:14

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()函数创建的是一样的

zhangzhequan 发表于 2022-10-7 19:22

dict([('a',1),('c',2),('b',3)])

甜萝 发表于 2022-10-7 19:25

zhangzhequan 发表于 2022-10-7 19:22


愚者—我 发表于 2022-10-7 19:33

paypojie 发表于 2022-10-7 19:25


字典的key, 默认的是字典序

sapin 发表于 2022-10-7 19:35

我不怎么常用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:39

愚者—我 发表于 2022-10-7 19:33
字典的key, 默认的是字典序

还是无法理解字典序是啥{:301_999:}

hrpzcf 发表于 2022-10-7 19:41

版本问题,我记得某个版本的Python字典变有序了(好像是3.8?),但仅限于创建字典的时候的顺序。如果增加键值对,顺序还是会乱。

甜萝 发表于 2022-10-7 19:44

sapin 发表于 2022-10-7 19:35
我不怎么常用python的OrderedDict类,可能理解也不到位。

不过不管是dict还是OrderedDict类本身都不是自 ...



用sorted的话排序是 a b c 这种样子但是不用sorted的话还是按照定义好的dict的顺序的呀

甜萝 发表于 2022-10-7 19:46

hrpzcf 发表于 2022-10-7 19:41
版本问题,我记得某个版本的Python字典变有序了(好像是3.8?),但仅限于创建字典的时候的顺序。如果增加 ...

晚上有时间的话测试一下你说的这种

hrpzcf 发表于 2022-10-7 19:49

paypojie 发表于 2022-10-7 19:46
晚上有时间的话测试一下你说的这种

利用这个特性,我对字典排序的时候是先获取原字典的tiems列表,排序,然后用该列表创建新字典
页: [1] 2 3
查看完整版本: dict中的key有序or无序 ?