是否可以在不使用python中的pop()的情况下查找和替换键?

时间:2019-11-14 04:26:49

标签: python replace dictionary-comprehension

我的字典元素在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}

4 个答案:

答案 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)

就这样