【问题标题】:Is it possible to find and replace key without using pop() in python?是否可以在 python 中不使用 pop() 来查找和替换密钥?
【发布时间】:2019-11-14 04:26:49
【问题描述】:

我在 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}

【问题讨论】:

    标签: python replace dictionary-comprehension


    【解决方案1】:

    您需要更清楚地了解您想要在这里实现的目标。假设如果找不到密钥,您想忽略并且什么也不做,您可以这样做:

    if c in dic_name:
         dic_name[d] =dic_name.pop(c)
    

    【讨论】:

    • 我只试过了。但我想显示,如果密钥不存在。
    • @SHENBGABHARATHAPRIYA:所以请使用if c not in dic_name: dic_name[d] = some_value
    【解决方案2】:

    您还可以使用字典推导来创建新字典并在新字典上附加替换值

    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)
    

    【讨论】:

      【解决方案3】:

      pop 为此目的没有任何问题。只需处理 key not found 的情况:

      try:
          dic_name[d] = dic_name.pop(c)
      except KeyError:
          pass
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-26
        • 2021-01-02
        • 1970-01-01
        • 2010-12-01
        • 2018-06-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多