Python辞書のエントリのキーを変更したいです。
これを行う簡単な方法はありますか?
2ステップで簡単に行えます。
dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]
または1ステップで:
dictionary[new_key] = dictionary.pop(old_key)
dictionary[old_key]
が未定義の場合、KeyError
が発生します。これは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
すべてのキーを変更したい場合は、
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}
あなたが単一のキーを変えたいならば:あなたは上記の提案のどれでもと一緒に行くことができます。
ポップアンドフレッシュ
>>>a = {1:2, 3:4}
>>>a[5] = a.pop(1)
>>>a
{3: 4, 5: 2}
>>>
Python 2.7以降では、辞書の内包表記を使用できます。これは、DictReaderを使用してCSVを読み取る際に遭遇した例です。ユーザーはすべての列名の末尾に ':'を付けました。
{'key1:' :1, 'key2:' : 2, 'key3:' : 3}
キーの末尾の ':'を取り除くには
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
キーは辞書が値を検索するために使用するものなので、実際にはそれらを変更することはできません。最も近い方法は、古いキーに関連付けられている値を保存し、それを削除してから、置換キーと保存された値を使用して新しいエントリを追加することです。他の答えのいくつかはこれが達成されることができるさまざまな方法を説明します。
あなたが複雑な辞書を持っているならば、それは辞書または辞書の中にリストがあることを意味します。
myDict = {1:"one",2:{3:"three",4:"four"}}
myDict[2][5] = myDict[2].pop(4)
print myDict
Output
{1: 'one', 2: {3: 'three', 5: 'four'}}
辞書内のすべてのキーを変換する
これがあなたの辞書だとしましょう。
>>> sample = {'person-id': '3', 'person-name': 'Bob'}
サンプル辞書キー内のすべてのダッシュをアンダースコアに変換するには、次の手順を実行します。
>>> sample = {key.replace('-', '_'): sample.pop(key) for key in sample.keys()}
>>> sample
>>> {'person_id': '3', 'person_name': 'Bob'}
これを行う直接的な方法はありませんが、削除してから割り当てることができます
d = {1:2,3:4}
d[newKey] = d[1]
del d[1]
または大規模なキーの変更を行います。
d = dict((changeKey(k), v) for k, v in d.items())
d = {1:2,3:4}
キーをリスト要素p = ['a'、 'b']に変更したいとします。次のようにします。
d=dict(Zip(p,list(d.values())))
そして私達は得る
{'a': 2, 'b': 4}
同じ値を多数のキーに関連付けることも、単にキーを削除して同じ値の新しいキーを追加することもできます。
たとえば、キー - >値があるとします。
red->1
blue->2
green->4
purple->2
を追加したりred->1
を削除してorange->1
を追加できない理由はありません。
一度にすべてのキーを変更する場合ここで私は鍵を握っています。
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