如何更改Python字典中条目的键?


当前回答

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

例如,如果你有键->值:

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

没有理由不能添加紫色->2或删除红色->1并添加橙色->1

其他回答

d = {1:2,3:4}

假设我们想要改变列表元素p=['a', 'b']的键值。 下面的代码可以做到:

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

我们得到

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

用下划线替换字典键中的空格,我使用这个简单的路由…

for k in dictionary.copy():
    if ' ' in k:
        dictionary[ k.replace(' ', '_') ] = dictionary.pop(k, 'e r r')

或者只是dictionary。pop(k)注意'e r r',它可以是任何字符串,如果键不在字典中,就会成为新的值,从而能够替换它,这在这里不可能发生。参数是可选的,在其他类似的代码中,KeyError可能会被击中,添加的arg会避免它,但可以创建一个新的键'e rr '或任何你设置的值。

.copy()避免…字典在迭代过程中改变了大小。

.keys()不需要,k是每个键,k在我的头脑中代表键。

(我使用v3.7)

关于字典pop()的信息

上面循环的一行代码是什么?

在python 2.7及更高版本中,您可以使用字典理解: 这是我在使用DictReader读取CSV时遇到的一个例子。用户已经在所有列名后面加上了':'

ori_dict ={“key1:”:1、“key2:”:2,“key3:”:3}

在键中去掉后面的':':

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

流行与新鲜

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

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

d = {1:2,3:4}

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

或者做大量的键改变:

d = dict((changeKey(k), v) for k, v in d.items())