我想澄清一下Python中的词典的一些观点,这可能会在未来帮助其他Python爱好者。Python:词典以及它们如何用iteritems存储和访问()
让我们从一个简单的字典开始。
foo = {'a_2': 4, 'b_2': 5, 'a_1': 2, 'b_1': 1}
和显示foo
给人,
In [31]: foo
Out[31]: {'a_1': 2, 'a_2': 4, 'b_1': 1, 'b_2': 5}
人们可以看到,foo
似乎是 '无序'。然而,在进一步阅读之后,我发现字典并不固有地排序,并且字典显示时的输出仅基于密钥的哈希值。
我产生了困惑,当我遍历使用foo.iteritems()
或foo.items()
字典(两者产生相同的结果。)
for k, v in foo.iteritems():
print '{}: {}'.format(k, foo[k])
b_1: 1
b_2: 5
a_2: 4
a_1: 2
这个输出顺序不与我在foo
进入键/值的顺序一致或当foo
被调用时它们被输出的方式。
这是否与foo.iteritems()
如何生成其键/值或其他内容有关?
我在Ubuntu
您的repl可能只是为您排序以便于阅读。另外,foo不是“叫”。你的repl只是显示foo。没有办法“打电话”字典 – acushner
当您显示'foo'时,IPython正在对键进行排序。 – user2357112