python字典是否有序

Python015

python字典是否有序,第1张

默认情况下Python的字典输出顺序是按照键的创建顺序。

字典的无序是指,不能人为重新排序。

比如说你按键值1,2,3,4的顺序创建的字典,只能由解析器按创建顺序,还是1,2,3,4的输出。

你无法控制它按照4,3,2,1的顺序输出,你也无法做到1,3,2,4的顺序。

而且这个输出顺序是也不是能真正按照创建顺序可以控的。

这里面有两个影响因素:

(1)键值的哈希碰撞,hash(key1) == hash(key2)时,向字典里连续添加的这个两个键的顺序是不可以控制的,也是无法做到连续的,后来的键会按算法调整到其它位置。

(2)字典空间扩容,当键的数量超过字典默认开的空间时,字典会做空间扩容,扩容后的键顺和创建顺序就会发生变化,不受人为控制。

序列类型用有序的数字键做索引将数据以数组的形式存储。一般索引值与所存储的数据毫无关系。还可以用另一种方式来存储数据:基于

某种相关之,比如说一个字符串。

哈希表的算法是获取键,对键执行一个叫做哈希函数的操作,并根据计算的结果,选择在数据结构的某个地址中存储你的值。任何一个值

的地址皆取决与它的键。正因为这种随意性,哈希表中的值是没有顺序的。你拥有一个无序的数据集。

你所能获得的有序集合只能是字典中的键的集合或者值的集合。由于字典本身是哈希的,所以是无序的。

python学习网,免费的python学习网站,欢迎在线学习!

roles = ["OWNER", "RCOM", "HRGDL2", "HRM", "HRH", "MP", "HP", "VP", "GM"]

info = {"VP": "80003", "HRM": "F140019", "MP": "F130008", "HRGDL2": "F140390", "OWNER": "F133255", "RCOM": "F900151", "GM": "00903", "HP": "80355", "HRH": "81453"}

sorted_dict = map(lambda x:{x:info[x]}, roles)

print(sorted_dict)