Python dictionary:keyとvalueを入れ替える

dictionaryについてよく使う、keyとvalue交換手順のまとめ

key value ペアを出力

まず、for loopでkeyとvalueのペアを出力する。
inの後はedict.keys()でも同じ。

>>> edict
{'j': 1, 'u': 9, 'b': 2, 'p': 7, 'd': 4, 'z': 5, 'h': 3}
>>> for key in edict:
...     print(key, edict[key])
... 
j 1
u 9
b 2
p 7
d 4
z 5
h 3

出力データをlistに変換

>>> lst = []
>>> for key in edict.keys():
...     lst.append((key, edict[key]))
... 
>>> lst
[('j', 1), ('u', 9), ('b', 2), ('p', 7), ('d', 4), ('z', 5), ('h', 3)]

因みに、dictionary型データをlist()でリスト化すると、keyのリストになる。

>>> list(edict)
['j', 'u', 'b', 'p', 'd', 'z', 'h']

利用可能なtupleを返すデータ.items()でも同様の事が出来る。

>>> lst = []
>>> for kv in edict.items():
...     lst.append(kv)
... 
>>> lst
[('j', 1), ('u', 9), ('b', 2), ('p', 7), ('d', 4), ('z', 5), ('h', 3)]

keyとvalueを入れ替える

このtupleを利用してvalueとkeyを入れ替えたリストを作る。

>>> lst = []
>>> for key, val in edict.items():
...     lst.append([val, key])
... 
>>> lst
[[1, 'j'], [9, 'u'], [2, 'b'], [7, 'p'], [4, 'd'], [5, 'z'], [3, 'h']]

この考え方を利用して、value, keyの形のdictionaryを作る。

>>> dct = {}
>>> edict
{'j': 1, 'u': 9, 'b': 2, 'p': 7, 'd': 4, 'z': 5, 'h': 3}
>>> for k, v in edict.items():
...     dct[v] = k
... 
>>> dct
{1: 'j', 9: 'u', 2: 'b', 7: 'p', 4: 'd', 5: 'z', 3: 'h'}

以上、dictionary型とlist型のデータ変換から、key=valueからvalue=keyへの変換をまとめてみました。

今後他に関連ネタがあれば追記します。