web-dev-qa-db-ja.com

辞書のキーの名前を変更する

Python辞書のエントリのキーを変更したいです。

これを行う簡単な方法はありますか?

301
user469652

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
577
marcog

すべてのキーを変更したい場合は、

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}

あなたが単一のキーを変えたいならば:あなたは上記の提案のどれでもと一緒に行くことができます。

49
Tauquir

ポップアンドフレッシュ

>>>a = {1:2, 3:4}
>>>a[5] = a.pop(1)
>>>a
{3: 4, 5: 2}
>>> 
29
kevpie

Python 2.7以降では、辞書の内包表記を使用できます。これは、DictReaderを使用してCSVを読み取る際に遭遇した例です。ユーザーはすべての列名の末尾に ':'を付けました。

{'key1:' :1, 'key2:' : 2, 'key3:' : 3}

キーの末尾の ':'を取り除くには

corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }

22
Ward

キーは辞書が値を検索するために使用するものなので、実際にはそれらを変更することはできません。最も近い方法は、古いキーに関連付けられている値を保存し、それを削除してから、置換キーと保存された値を使用して新しいエントリを追加することです。他の答えのいくつかはこれが達成されることができるさまざまな方法を説明します。

7
martineau

あなたが複雑な辞書を持っているならば、それは辞書または辞書の中にリストがあることを意味します。

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'}}
5
Hatem

辞書内のすべてのキーを変換する

これがあなたの辞書だとしましょう。

>>> 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'}
4
Pranjal Singi

これを行う直接的な方法はありませんが、削除してから割り当てることができます

d = {1:2,3:4}

d[newKey] = d[1]
del d[1]

または大規模なキーの変更を行います。

d = dict((changeKey(k), v) for k, v in d.items())
3
AndiDog
d = {1:2,3:4}

キーをリスト要素p = ['a'、 'b']に変更したいとします。次のようにします。

d=dict(Zip(p,list(d.values()))) 

そして私達は得る

{'a': 2, 'b': 4}
1

同じ値を多数のキーに関連付けることも、単にキーを削除して同じ値の新しいキーを追加することもできます。

たとえば、キー - >値があるとします。

red->1
blue->2
green->4

purple->2を追加したりred->1を削除してorange->1を追加できない理由はありません。

0
DGH

一度にすべてのキーを変更する場合ここで私は鍵を握っています。

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