1

我想使用带有键的字典,也想使用带有索引的列表。但我发现分配给字典的顺序不正确。

我的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]

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

4

1 回答 1

6

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

更新:准确地说,dict的存储是不变的,但是迭代是用一个额外的数据结构来实现的,以根据key的原始插入顺序提供一个固定的顺序。

于 2013-09-11T17:18:35.263 回答