順序付けられた辞書を最後から順に繰り返し処理しようとしています。標準辞書の場合はすべて正常に機能しますが、orderedDict の最初のソリューションは奇妙な反応を示します。popitem()
1つのキーと値のペアを返している間(ただしkv_pair
、2つの変数で置き換えることができないため、どういうわけか順番に)、反復は終了しているようです。次のキーと値のペアに進む簡単な方法がわかりません。
2 つの有効な代替手段 (以下を参照) を見つけましたが、どちらも通常の辞書アプローチの優雅さに欠けています。
オンライン ヘルプで見つけた情報から判断することはできませんが、私の予想は間違っていると思います。もっとエレガントなアプローチはありますか?
from collections import OrderedDict
normaldict = {"0": "a0.csf", "1":"b1.csf", "2":"c2.csf"}
for k, v in normaldict.iteritems():
print k,":",v
d = OrderedDict()
d["0"] = "a0.csf"
d["1"] = "b1.csf"
d["2"] = "c2.csf"
print d, "****"
for kv_pair in d.popitem():
print kv_pair
print "++++"
for k in reversed(d.keys()):
print k, d[k]
print "%%%%"
while len(d) > 0:
k, v = d.popitem()
print k, v