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