6

Pythonで辞書のキーと値のペアの順序を逆にするにはどうすればよいですか? たとえば、次の辞書があります。

{"a":1, "b":2, "c":3}

返すように逆にしたい:

{"c":3, "b":2, "a":1}

これを行うことができる、私が聞いたことのない機能はありますか? いくつかのコード行も問題ありません。

4

5 に答える 5

7

ディクショナリには順序の意味がないため、キーと値のペアはどの形式でも順序付けされていません。

キーの順序を保持したい場合は、collections.OrderedDict通常の辞書を使用する代わりに、最初から使用する必要があります。例 -

>>> from collections import OrderedDict
>>> d = OrderedDict([('a',1),('b',2),('c',3)])
>>> d
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

OrderedDict は、キーがディクショナリに入力された順序を保持します。上記の場合、キーがリストに存在する順序になります[('a',1),('b',2),('c',3)]-'a' -> 'b' -> 'c'

次に、例を使用してキーの逆順を取得できますreversed(d)-

>>> dreversed = OrderedDict()
>>> for k in reversed(d):
...     dreversed[k] = d[k]
...
>>> dreversed
OrderedDict([('c', 3), ('b', 2), ('a', 1)])
于 2015-08-20T05:36:00.483 に答える
-1

ディクショナリは Hashmap を使用してキーと対応する値を格納します。

見てください:Python辞書はハッシュテーブルの例ですか?

ハッシュに関連するものには順序がありません。

これでそれを行うことができます:

d = {}
d['a']=1
d['b']=2
d['c']=3
d['d']=4
print d
for k,v in sorted(d.items(),reverse = True):
    print k,v

d.items()タプルのリストを返します : タプルの値[('a', 1), ('c', 3), ('b', 2), ('d', 4)]k,v取得してループで繰り返します。 sorted()はソートされたリストを返しますが、返さuse d.items().sort()ない代わりに を上書きしようとすることはできませんd.items()

于 2015-08-20T06:40:24.210 に答える