python - 为什么字典中的项目顺序在 Python 中发生了变化?

标签 python dictionary

<分区>

我正在尝试通过一些教程学习 Python。这是我遇到的一个让我感到困惑的简单示例。

>>> d={"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}

>>> d
{'pwd': 'secret', 'database': 'master', 'uid': 'sa', 'server': 'mpilgrim'}

>>> d.keys()
['pwd', 'database', 'uid', 'server']

>>> d.values()
['secret', 'master', 'sa', 'mpilgrim']

正如您在定义字典的第一行中所见,"pwd":"secret" 项是字典中的最后一个元素。但是,当我输出字典时,它变成了第一个元素。字典的其余部分已重新排序。

我可以知道为什么会这样吗?

如果我使用 dict.keys() 从字典中提取键并按照我认为的顺序迭代它,是否会导致不匹配问题?

最佳答案

May I know why this is happening?

这是因为字典在内部的组织方式。

简而言之,这是通过哈希表实现的,该哈希表根据它们的 hash() 值将键放入桶中。

If I use dict.keys() to extract the keys from a dictionary and iterate it in an order that I suppose it to be, will that cause dismatch problem?

取决于你怎么做。

k = list(d.keys())
k.sort()
for i in k: print i, d[i]

应该完全按照您希望的方式工作。

关于python - 为什么字典中的项目顺序在 Python 中发生了变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20192950/

相关文章:

python - 从CLI配置EMR Hadoop Yarn

python - 重新排列数据框以在Python中具有子列

python - 如何查看安装了哪个版本的nltk、scikit learn?

python - 我们如何修改货架中的数据?

python - 从列表类别创建递归列表

python - 使用 Matplotlib 复制 Log10 缩放

python - 我无法运行我的 tophat 功能

typescript - 在同一行的 typescript 中创建和初始化字典

java - 在为 Android 编程时,如何获得几乎所有英语单词的列表?

C++, map 插入&&文件流读取导致麻烦