Python辞書のエントリのキーを変更したい。
これを行う簡単な方法はありますか?
Python辞書のエントリのキーを変更したい。
これを行う簡単な方法はありますか?
回答:
2つのステップで簡単に実行:
dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]
または1ステップで:
dictionary[new_key] = dictionary.pop(old_key)
これ引き上げるKeyError
場合はdictionary[old_key]
定義されていません。これは削除されることに注意してくださいdictionary[old_key]
。
>>> dictionary = { 1: 'one', 2:'two', 3:'three' }
>>> dictionary['ONE'] = dictionary.pop(1)
>>> dictionary
{2: 'two', 3: 'three', 'ONE': 'one'}
>>> dictionary['ONE'] = dictionary.pop(1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 1
dict[new_value] = dict.pop(old_value, some_default_value)
を回避するために使用できます
old_key
とは異なりnew_key
ます。
すべてのキーを変更したい場合:
d = {'x':1, 'y':2, 'z':3}
d1 = {'x':'a', 'y':'b', 'z':'c'}
In [10]: dict((d1[key], value) for (key, value) in d.items())
Out[10]: {'a': 1, 'b': 2, 'c': 3}
単一のキーを変更する場合:上記の提案のいずれかを使用できます。
{ d1[key] : value for key, value in d.items() }
Python 2.7以降では、辞書内包表記を使用できます。これは、DictReaderを使用してCSVを読み取るときに遭遇した例です。ユーザーはすべての列名に「:」を付けていました
ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}
キーの末尾の「:」を取り除くには:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
d = {1:2,3:4}
キーをリスト要素p = ['a'、 'b']に変更するとします。次のコードが行います:
d=dict(zip(p,list(d.values())))
そして私たちは
{'a': 2, 'b': 4}
すべてのキーを一度に変更する場合。ここで私はキーをステミングしています。
a = {'making' : 1, 'jumping' : 2, 'climbing' : 1, 'running' : 2}
b = {ps.stem(w) : a[w] for w in a.keys()}
print(b)
>>> {'climb': 1, 'jump': 2, 'make': 1, 'run': 2} #output