吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1322|回复: 26
收起左侧

[讨论] dict中的key有序or无序 ?

[复制链接]
甜萝 发表于 2022-10-7 19:14
本帖最后由 paypojie 于 2022-10-7 19:21 编辑

                                                                                           如标题那样 想知道key是有序还是无序


廖雪峰的官方网站是这样介绍的 请看截图

image.png

不知道是不是python版本的问题 我的运行结果是这样的

image.png

代码:

[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()函数创建的字典是有序的

image.png

cmd也是这样的

猜测: 是不是在比较新的python版本中 dict函数创建的字典是有序的 就和用OrderedDict()函数创建的是一样的

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

zhangzhequan 发表于 2022-10-7 19:22
[Python] 纯文本查看 复制代码
dict([('a',1),('c',2),('b',3)])
 楼主| 甜萝 发表于 2022-10-7 19:25
愚者—我 发表于 2022-10-7 19:33
sapin 发表于 2022-10-7 19:35
我不怎么常用python的OrderedDict类,可能理解也不到位。

不过不管是dict还是OrderedDict类本身都不是自动排序吧,要排序的话用
[Python] 纯文本查看 复制代码
sorted()


[Python] 纯文本查看 复制代码
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, 默认的是字典序

还是无法理解字典序是啥
hrpzcf 发表于 2022-10-7 19:41
版本问题,我记得某个版本的Python字典变有序了(好像是3.8?),但仅限于创建字典的时候的顺序。如果增加键值对,顺序还是会乱。
 楼主| 甜萝 发表于 2022-10-7 19:44
sapin 发表于 2022-10-7 19:35
我不怎么常用python的OrderedDict类,可能理解也不到位。

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

image.png

用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列表,排序,然后用该列表创建新字典
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 06:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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