龙空技术网

Python字典到底有序还是无序?#教学

Crossin的编程教室 78

前言:

当前大家对“python36字典有序”大概比较关切,咱们都想要知道一些“python36字典有序”的相关文章。那么小编同时在网摘上汇集了一些对于“python36字典有序””的相关知识,希望看官们能喜欢,姐妹们快快来学习一下吧!

Python编程:有序、无序。

Python中的字典dict到底是无序的还是有序的?有人说无序,也有人说以前无序,但3.6开始改成有序了。两种说法都对,但这个有序、无序可能跟你想的不太一样。

老版本Python中的dict确实无序,你写的是ABC,输出的却可能是CBA。而从Python3.6开始,dict的插入顺序是保持的,key的顺序跟你定义时的先后顺序一致,重复的键和修改已有键值不改变顺序。这样的好处是让程序的行为更加可预测。

比如从一个JSON格式的字符串中读取了数据,修改了其中项,再重新保存就不会打乱原有的数据结构。而在3.6之前版本实现同样的效果就要用到collections模块的0rderedDict类型,它是dict的一个子类,但增加了对插入顺序的保持。

但即便如此,你说现在的Python字典是无序的也有一定道理。比较两个元素相同但顺序不同的字典是否相等,结果是True。这是因为dict定义的相等性比较是基于元素的内容,而不考虑插入的顺序。相比之下,刚刚提到的OrderedDict才真的是名副其实的有序。比较相等时不但要元素相同,顺序也要一致。

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

标签: #python36字典有序