【问题标题】:How do I update my dictionary depending on whether or not the key already exists? [duplicate]如何根据密钥是否已经存在来更新我的字典? [复制]
【发布时间】:2019-02-06 00:55:14
【问题描述】:

我想更新我的字典。如果键已经存在于字典中,那么我想向该键添加新值(来自另一个字典)。如果字典中不存在该键,那么我想添加一个新键(来自另一个字典)。

换句话说,我只想要使用新添加(未覆盖)值(如果键同时存在于两个字典中)和新键(如果键存在于新字典中)的更新键

这是我目前拥有的词典的一个示例:

     global_dict = {'abc': 123, 'def': 456}
     new_dict={'def':789, 'ghi': hello}

我想要的是全局字典最终看起来像这样:

     global_dict={'abc':123, 'def'=[456, 789], 'ghi'=hello}

这是我目前拥有的代码:

    for key,val in new_dict.items():
       if key in global_dict:
          global_dict[key]=[global_dict[key],val]
       else:
          global_dict.update(new_dictionary)

这目前不起作用,我不确定我的解决方案有什么问题。有什么建议吗?

【问题讨论】:

  • 当你说它不起作用时,你能更准确地说一下你的意思吗?实际发生了什么?
  • 您有时只需要列表?这可能会以不必要的方式使事情复杂化。
  • @DavidZ,我没有看到来自 new_dict 的新唯一键。
  • @StephenRauch,我总是想要列表,但我只想要一个包含新值(如果两个字典中都存在键)和新键(如果新字典中存在键)的更新列表跨度>
  • 但是你的例子并不总是有列表。

标签: python dictionary key


【解决方案1】:

key 不在global_dict 中时,您使用整个new_dict 更新global_dict,因此您最终会覆盖您为匹配的键创建的子列表。您应该只更新不在 global_dict 中的键的值。

变化:

global_dict.update(new_dictionary)

到:

global_dict[key] = val

【讨论】:

  • 我刚试过这个,但是来自 new_dictionary 的新键没有添加到 global_dictionary。
  • 它适用于我,因为 global_dict 变为 {'abc': 123, 'def': [456, 789], 'ghi': 'hello'}。如果它不适合你,你能告诉我你的新代码吗?
  • 没有出现在global_dict 中但仅在dict_2014 中的键。你在找什么样的内容描述dict_2014?它是字符串和浮点数的混合体。
  • 该代码看起来正确。你实际运行中global_dictdict_2014的内容是什么?运行此代码后,dict_2014 中的哪些键没有显示在 global_dict 中?
  • 现在可以使用了!我以前的代码中有一个错误!谢谢。
猜你喜欢
  • 2011-04-20
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 2020-05-27
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
相关资源
最近更新 更多