Я хочу изменить ключ записи в словаре 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]
равен undefined. Обратите внимание, что это удалит 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}
если вы хотите изменить один ключ: Вы можете пойти с любым из приведенных выше предложений.
pop'n'fresh
>>>a = {1:2, 3:4}
>>>a[5] = a.pop(1)
>>>a
{3: 4, 5: 2}
>>>
В python 2.7 и выше вы можете использовать понимание словаря: Это пример, который я встречал при чтении CSV с помощью DictReader. Пользователь заполнил все имена столбцов словами ':'
{'key1:' :1, 'key2:': 2, 'key3:': 3}
чтобы избавиться от конечного ":" в ключах:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
Поскольку ключи - это то, что словари используют для поиска значений, вы не можете их изменить. Самое близкое, что вы можете сделать, это сохранить значение, связанное со старым ключом, удалить его, а затем добавить новую запись с ключом замены и сохраненным значением. Некоторые из других ответов иллюстрируют разные способы, которыми это может быть достигнуто.
Нет прямого способа сделать это, но вы можете удалить-then-assign
d = {1:2,3:4}
d[newKey] = d[1]
del d[1]
или выполните массовые изменения ключа:
d = dict((changeKey(k), v) for k, v in d.items())
Если у вас сложный dict, это означает, что в файле dict есть dict или list:
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'}
Вы можете связать одно и то же значение со многими ключами или просто удалить ключ и повторно добавить новый ключ с тем же значением.
Например, если у вас есть ключи- > значения:
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
d = {1:2,3:4}
предположим, что мы хотим изменить ключи элементов списка p = ['a', 'b']. следующий код будет делать:
d=dict(zip(p,list(d.values())))
и мы получаем
{'a': 2, 'b': 4}
Я не видел этого точного ответа:
dict['key'] = value
Вы можете даже сделать это для атрибутов объектов. Сделайте их в словаре, выполнив следующие действия:
dict = vars(obj)
Затем вы можете манипулировать атрибутами объекта, как если бы вы использовали словарь:
dict['attribute'] = value