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 のストレージは変更されていませんが、キーの元の挿入順序に基づいて固定順序を提供するために、追加のデータ構造を使用して反復が実装されています。

于 2013-09-11T17:18:35.263 に答える