Python如何处理混合类型的字典键排序,为什么?

时间:2019-07-12 18:03:14

标签: python dictionary

我正在尝试创建一个字典,其中的索引是字符串(“ 20”和“ 0”)和整数(10和11)的混合,但是每次打印出字典时,输出似乎都是随机变化的。我已经读过python中的字典应该保持插入字典中的元素的顺序,那么为什么会发生元素的这种混排呢?

arr = {};
arr['20'] = "hello"
arr['0'] = "hey"
arr[10] = "hi"
arr[11] = "yo"

print(arr)

我希望输出为:

{'20: 'hello', '0': 'hey', 10: 'hi', 11: 'yo'}

但是输出最终会重新排列数组中的每个元素并将10和11转换为字符串:

{'20': 'hello', 10: 'hi', 11: 'yo', '0': 'hey'}

1 个答案:

答案 0 :(得分:1)

为澄清起见,您使用的数据结构是python“字典”而不是数组。它将键映射到值。 Python字典没有内部顺序,因此它将仅按照您输入的顺序打印。

如果要按顺序排列字典,则可以使用称为OrderedDict的结构:

from collections import OrderedDict
exampleDict = OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])