1

この投稿の逆辞書順で同じシンを実行したいと思います。OrderedDictの使い方がわかりませんでした。逆のリストで使用されているdict()メソッドを使用してこのコードを試しましたが、最初の辞書が得られました。

mydic = {'n1': 3, 'n2': 9}
ol = mydic.items()
ol.reverse()
print(ol)
dc = dict(ol)
print(dc)

結果として私は得る:

ol >> [('n2', 9), ('n1', 3)]
dc >> {'n1': 3, 'n2': 9}

順序を逆にした後で辞書を再構築する方法はありますか?

前もって感謝します

4

3 に答える 3

2

あなたのアプローチの主な問題は、元のdictがそのキーの特定の順序を保証しないことです。mydicのアイテムのスナップショットを取得し、順序を逆にして、結果をに格納することOrderedDictはできますが、その出力は未定義になります(入力が未定義であるため)。

言い換えれば、ゴミをゴミに出します。

反復可能なキーと値のペアから始める場合は、次を使用できますOrderedDict

In [18]: ol = [('n2', 9), ('n1', 3)]

In [19]: OrderedDict(reversed(ol))
Out[19]: OrderedDict([('n1', 3), ('n2', 9)])
于 2012-12-17T23:20:53.863 に答える
2

通常のPython辞書は順序を保持しないため、キーを再配置しても何の役にも立ちません。

そうは言っても、OrderedDict使い方は本当に簡単です。

>>> from collections import OrderedDict
>>> 
>>> ol = [('n2', 9), ('n1', 3)]
>>> dc = OrderedDict(ol)
>>> dc
OrderedDict([('n2', 9), ('n1', 3)])
于 2012-12-17T23:21:15.030 に答える
0

collections.OrderedDictを使用します

順序付けられた辞書は通常の辞書と同じですが、アイテムが挿入された順序を覚えています。順序付けられた辞書を反復処理すると、キーが最初に追加された順序でアイテムが返されます。

于 2012-12-17T23:22:19.153 に答える