我在python 3中有以下词典。两个词典都有相同的键和顺序,即'a', 'z', 'foo', 'b'
。但每个人都有不同的价值。
我确认两个关键订单总是一样的。但它取决于环境吗?我知道我们通常无法修复密钥的顺序。我想知道具有相同键的不同词典的键顺序'
dic1 = {'a': 0, 'z': 2, 'foo': 0, 'b': 0}
dic2 = {'a': 1, 'z': 0, 'foo': 8, 'b': 7}
for k, v in dic1.items():
print(k, v)
for k, v in dic2.items():
print(k, v)
答案 0 :(得分:0)
在Python 3.7之前,键的顺序不保证是稳定的。但是,在Python 3.7及更高版本中,保证按照最初添加到dict
的顺序返回密钥。
请点击此处了解详情:Are dictionaries ordered in Python 3.6+?
如果您希望在早期版本的Python中进行稳定排序,可以使用collections.OrderedDict
。
请注意,OrderedDict
和后来的Python dict
不会根据键本身的任何属性(例如按字母顺序)对键进行排序,因此这些都不符合您使用相同键进行切换的标准总是以相同的顺序返回它们。如果你想要,你有几个选择:
sorted(dct.keys())
)heapq
)[f(d1[k], d2[k]) for k in d1]
)SortedDict
包中的sortedcontainers
类:http://www.grantjenks.com/docs/sortedcontainers/sorteddict.html