、なぜこの出来事はありますか?
d_names
d_new_names
第二は、最初の再注文したバージョンです:
は、私は2つの辞書を持っています。これは私がI cannot re-order an existing OrderedDict - I need to create a new oneを理解しているからです。
l_new_names = []
for s_number in d_names:
for s_week_number in d_names[s_number]:
l_new_names.append([s_number, s_week_number])
print "l_new_names before sort = %s" % l_new_names
l_new_names.sort()
print "l_new_names after sort = %s" % l_new_names
その後、私が作成し、新しい辞書の最初のレベルを入力します:
d_new_names = ordereddict.OrderedDict()
for s_number, _ in l_new_names:
if s_number in d_new_names:
print "NOT creating d_new_names[%s]" % s_number
else:
print "creating d_new_names[%s]" % s_number
d_new_names[s_number] = {}
d_new_names[s_number][NAME] = d_names[s_number][NAME]
その後、私は2番目のレベルを作成し、塗りつぶし、私は最初の順序付きリストを作成します。これを行うに
辞書:
for s_number, s_week_number in l_new_names:
d_new_names[s_number][s_week_number] = {}
d_new_names[s_number][s_week_number][DATE] = d_names[s_number][s_week_number][DATE]
d_new_names[s_number][s_week_number][PRICE] = d_names[s_number][s_week_number][PRICE]
辞書の内容をファイルに書き込んだとき、私はこのことに驚きました順序:
writing week:13
writing week:15
writing week:14
writing week:16
週15私はこの(数はループに対応する)を求める(第ループを通してOrderedDictたび印刷)調査時に週14
の前に、ある:
を- 週13を追加;注文:13
- 14週追加;注文:13,14
- 15週追加;注文:13,,14
- 16週追加;順序:13、15、14、16
結論:OrderedDictに作成および構成要素の挿入時に、要素が間違った順序で挿入されています。私はそれが可能だとは思わなかった。
誰でも何が起こっているのか、どのように解決するのか説明できますか?
コードを実行するサンプルデータを投稿してください。このコードは、問題を再現するのに最小限ではありません。 – MohitC
他の何かが間違っています。順序付けされた辞書は元の挿入順序を非常に維持します。 –