首页 > 解决方案 > 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'}

标签: pythondictionary

解决方案


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

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

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

推荐阅读