Pythonで辞書のキーと値のペアの順序を逆にするにはどうすればよいですか? たとえば、次の辞書があります。
{"a":1, "b":2, "c":3}
返すように逆にしたい:
{"c":3, "b":2, "a":1}
これを行うことができる、私が聞いたことのない機能はありますか? いくつかのコード行も問題ありません。
Pythonで辞書のキーと値のペアの順序を逆にするにはどうすればよいですか? たとえば、次の辞書があります。
{"a":1, "b":2, "c":3}
返すように逆にしたい:
{"c":3, "b":2, "a":1}
これを行うことができる、私が聞いたことのない機能はありますか? いくつかのコード行も問題ありません。
ディクショナリには順序の意味がないため、キーと値のペアはどの形式でも順序付けされていません。
キーの順序を保持したい場合は、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)])
ディクショナリは 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()
。