【发布时间】:2014-05-08 01:53:22
【问题描述】:
假设我有这本字典:
mydict = {'1': ['a', 'b', 'c'],
'2': ['d', 'e', 'f'],
'3': ['g', 'h', 'i'],
'4': ['j', 'k', 'l'],
'5': ['m', 'n', 'o']}
根据 Python 文档,
字典对象的keys()方法返回一个包含所有 字典中使用的键,按任意顺序
当我调用mydict.keys() 方法时,它会给我一个mydict 中的键列表,没有任何特定顺序,如下所示:
['1', '3', '2', '5', '4']
我的问题是.keys() 方法生成的键列表(上图)是否每次调用时都具有相同的顺序?我已经尝试过使用这样的 for 循环:
for i in range(100):
print mydict.keys()
在我看来,结果列表始终具有相同的顺序。但我只是想确认没有隐藏的情况会改变输出列表的顺序。
换句话说,如果我使用 mydict.keys()[0] ,我每次都会得到相同的物品吗?
【问题讨论】:
-
不会赌上我的性命...
-
只要不向字典中添加元素我认为应该没问题。但我让 Python 专家发言。
-
@FelixKling,我认为它也可能因版本而异
-
我敢打赌它是按 hashmap 顺序排列的,所以如果你在完全相同的解释器上运行时以完全相同的方式构造字典,它很可能是相同的。尝试添加几千个项目并删除它们,我敢打赌订单会改变。
-
@sshashank124:可能。但无论如何,如果问题归结为“如果连续调用两次,
.keys()是否返回相同的列表”,我会说是的。并不是字典的元素以不确定的方式存储,我认为阅读字典也不会影响它的内部存储结构。改变字典当然可以改变内部存储元素的“顺序”。
标签: python python-2.7 dictionary key