前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python字典到底有序还是无序?

Python字典到底有序还是无序?

作者头像
Crossin先生
发布2024-05-20 16:49:23
970
发布2024-05-20 16:49:23
举报

Python中的字典dict,到底是无序的还是有序的?

有人说无序;也有人说以前无序,但3.6开始改成有序了。

两种说法都对,但这个有序无序,可能跟你想的不太一样。

老版本Python中的dict确实无序,你写的是a、b、c,输出却可能是c、b、a。

而从Python3.6开始,dict的插入顺序是保持的。key的顺序跟你定义时的先后顺序一致,重复的键和修改已有键值不改变顺序。

这样的好处是让程序的行为更加可预测,比如从一个JSON格式的字符串中读取了数据,修改了其中项,再重新保存,就不会打乱原有的数据结构。

代码语言:javascript
复制
import json
config = '{\
"hostname":"python666.cn", \
"port": 8080, \
"debug": true, \
"timeout": 60\
}'
print(config)
config_dict = json.loads(config)
config_dict['port'] = 8888
config_dict['debug'] = False
config = json.dumps(config_dict)
print(config)

而在3.6之前版本,实现同样的效果就要用到 collections 模块的 OrderedDict 类型,它是 dict 的一个子类,但增加了对插入顺序的保持

但即便如此,你说现在的Python字典是无序的也有一定道理。

比较两个元素相同但顺序不同的字典是否相等,结果是True。这是因为dict定义的相等性比较是基于元素的内容,而不考虑插入的顺序。

相比之下,刚刚提到的OrderedDict,才真的是名副其实的有序。比较相等时不但要元素相同,顺序也要一致。

所以你觉得,python字典到底应该称为有序还是无序呢?

作者:Crossin的编程教室

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档