我无法使用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'}
答案 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)
当您遍历密钥视图时,您正在更改密钥。不推荐。
相反,您可以复制密钥并对其进行迭代。由于字典键是唯一的,因此可以使用list
或set
:
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'}
您当然可以使用字典理解,您应该会发现它更有效。