无法使用pop重命名Python dict键值-错误?

时间:2018-08-30 10:40:19

标签: python python-3.x dictionary

我无法使用pop(如下所述)重命名Python字典。我使用了post中的建议。这是Python错误吗?我正在使用Python 3.5.2

>>> d = {'a': 'ABC', 'b': 'CDE', 'c': 'KRT'}
>>> for old_key in d.keys():
        d['NEW_KEY_' + old_key] = d.pop(old_key)
>>> d

{'NEW_KEY_NEW_KEY_NEW_KEY_b': 'CDE', 'NEW_KEY_NEW_KEY_a': 'ABC', 'c': 'KRT'}

3 个答案:

答案 0 :(得分:2)

在Python 3中,您必须将for old_key in d.keys()更改为for old_key in list(d.keys())。那应该行得通,因为您要遍历动态实体。

答案 1 :(得分:1)

文档中提到,在迭代字典时更改字典可能无法产生正确的结果。你最好写一些类似的东西

new_dict = {'NEW_KEY_' + key: value for key, value in old_dict.items()}

答案 2 :(得分:1)

当您遍历密钥视图时,您正在更改密钥。不推荐。

相反,您可以复制密钥并对其进行迭代。由于字典键是唯一的,因此可以使用listset

d = {'a': 'ABC', 'b': 'CDE', 'c': 'KRT'}

for old_key in list(d):
    d['NEW_KEY_' + old_key] = d.pop(old_key)

# {'NEW_KEY_a': 'ABC', 'NEW_KEY_b': 'CDE', 'NEW_KEY_c': 'KRT'}

您当然可以使用字典理解,您应该会发现它更有效。