我的字典元素在dic_name中。 var c具有可在dic_name中找到的键值,而var d是替换c的新键。
dic_name[d]=dic_name.pop(c)
我得到以下输出。
Enter the keyname you want to replace: e
Enter the new keyname value: z
ORIGINAL DICTIONARY {'q': '1', 'w': '2', 'e': '8', 'r': '4', 't': '5'}
NEW DICTIONARY {'q': '1', 'w': '2', 'r': '4', 't': '5', 'z': '8'}
假设未找到密钥,则将生成密钥错误。因此,我使用了以下代码:
dic_name[d]=dic_name.pop(c,None)
但是它会创建一个值为“ None”的新密钥。
enter the keyname you want to replace: e
enter the new keyname value: r
ORIGINAL DICTIONARY {'q': '1', 'w': '2'}
NEW DICTIONARY {'q': '1', 'w': '2', 'r': None}
答案 0 :(得分:2)
您需要更清楚地了解您要在此处实现的目标。假设您想忽略并且在找不到密钥的情况下什么也不做,您可以执行以下操作:
if c in dic_name:
dic_name[d] =dic_name.pop(c)
答案 1 :(得分:1)
您还可以使用dict理解来创建新的dict,并在新的dict上附加替换值
replace = 'e'
replace_with = 'z'
old_dict = {'q': '1', 'w': '2', 'e': '8', 'r': '4', 't': '5'}
new_dict = {i:j for i,j in old_dict.items() if i != replace}
new_dict[replace_with]=old_dict[replace]
print(new_dict)
答案 2 :(得分:0)
pop
没什么问题。只需处理未找到的密钥条件:
try:
dic_name[d] = dic_name.pop(c)
except KeyError:
pass
答案 3 :(得分:-1)
在更新字典密钥之前检查,该密钥是否存在于您要应用更改的字典中?
尝试以下脚本
if key in dictionary:
# update the respective value of the key
dictionary [key] = your_new_value
# delete the key
dictionary.pop(key, None)
就这样