python - Python 如何处理具有混合类型的排序字典键,为什么?
问题描述
我正在尝试创建一个字典,其中索引是字符串('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'}
解决方案
只是为了澄清起见,您使用的数据结构是python“字典”而不是数组。它将键映射到值。Python 字典没有内部排序,因此它只会按照您输入的顺序打印。
如果您希望字典按顺序排列,您可以使用称为 OrderedDict 的结构:
from collections import OrderedDict
exampleDict = OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])