如何根据密钥是否已存在更新我的字典? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据密钥是否已存在更新我的字典? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

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

换句话说,我只是希望更新的键具有新添加的(未被覆盖的)值(如果两个词典中都存在键)和新键(如果键存在于新词典中)

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

     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)

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

答案

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

更改:

global_dict.update(new_dictionary)

至:

global_dict[key] = val

以上是关于如何根据密钥是否已存在更新我的字典? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将重复键添加到字典中

字典说密钥不存在

更新或添加密钥到字典 [重复]

测试一个键是不是存在于字典中,如果 [重复] 则在相同的情况下进行另一个测试

插入批处理,如果在Codeigniter 3 HMVC中有重复的密钥更新

nodejs mysql批量插入重复密钥更新