更改字典中某个键的名称

我想改变一个Python字典中的条目的关键。

有没有一个简单的方法来做到这一点?

轻松完成分两步:

dictionary[new_key] = dictionary[old_key] del dictionary[old_key] 

或在第1步:

 dictionary[new_key] = dictionary.pop(old_key) 

如果dictionary[old_key]未定义,将会引发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} 

如果你想改变单键:你可以去任何以上的build议。

pop'n'fresh

 >>>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 = { x.replace(':', ''): ori_dict[x] for x in ori_dict.keys() }

由于键是字典用于查找值的,所以不能真正改变它们。 您可以做的最接近的事情是保存与旧密钥相关联的值,将其删除,然后使用replace密钥和保存的值添加新条目。 其他几个答案说明了这可以完成的不同方式。

没有直接的方式来做到这一点,但你可以删除,然后分配

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

您可以将相同的值与多个键相关联,也可以只删除一个键并重新添加具有相同值的新键。

例如,如果您有键 – >值:

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

没有理由不能添加purple->2或删除red->1并添加orange->1

我还没有看到这个确切的答案:

 dict['key'] = value 

你甚至可以这样做来对象属性。 通过这样做把它们变成字典:

 dict = vars(obj) 

然后你可以像操作字典一样操作对象属性:

 dict['attribute'] = value