python字典赋值不按顺序

时间:2013-09-11 17:16:24

标签: python dictionary

我想使用带有键的字典以及带索引的列表。但我发现字典的分配不合适。

我的python脚本是:

left=['E','Z','T','Y','F']

for lhs in left:
  first[lhs]=set()
  follow[lhs]=set()
  print first

我得到的输出为:

{'E': set([])}
{'Z': set([]), 'E': set([])}
{'Z': set([]), 'E': set([]), 'T': set([])}
{'Y': set([]), 'Z': set([]), 'E': set([]), 'T': set([])}
{'Y': set([]), 'Z': set([]), 'E': set([]), 'T': set([]), 'F': set([])}

有一次它被插入到最后,另一次被插入到开头。 这让我觉得我根本不懂字典。 我在哪里可以深入了解字典。 以及如何使用键和索引遍历字典。 为此我现在正在使用:

for lhs in left:
  print first[lhs]

这一些如何帮助索引。但还有其他方法吗?

1 个答案:

答案 0 :(得分:6)

使用collections.OrderedDict。它需要Python 2.7,但它会记住添加键的顺序,而不是基于底层哈希算法以任意顺序存储它们。

更新:确切地说,dict的存储不变,但迭代是通过附加数据结构实现的,以根据键的原始插入顺序提供固定顺序。