通过python中的两个词典添加缺少的数据

时间:2017-07-20 07:21:13

标签: python dictionary

我遇到了一个关于通过两个python词典添加数据的小问题。

这是我的代码:

dicta = {'name' : 'character', 'age': 30 }
dictb = {'name' : 'Jon'}

我想在dictb中添加密钥和值' age&#39:30。 所以我这样做:

for i in dicta:
    for j in dictb:
        if(i not in dictb):
            dictb.update(i)

然后没有添加任何东西,我遇到了这个问题:

ValueError:字典更新序列元素#0的长度为1; 2是必需的

这是否发生,因为我的dictb中没有空白空间?

我怎么能解决这个问题?

感谢您的回复!

最好的问候,卡罗。

3 个答案:

答案 0 :(得分:3)

您不需要像当前使用的那样嵌套循环。只需迭代dicta的密钥,然后检查密钥是否存在于dictb中:

for k in dicta:
    if k not in dictb:
        dictb[k] = dicta[k]

现有代码存在的问题是i是关键字,而不是字典。因此调用dict.update(int)失败。你需要的东西(对于你现有的代码):

dictb.update({ i : dicta[i] })

虽然仍在摆脱内循环。

答案 1 :(得分:0)

这样可以正常工作!

dicta = {'name' : 'character', 'age': 30 }
dictb = {'name' : 'Jon'}
for key, value in dicta.items(): # items() works at python3 use iteritems in 2
    if key not in dictb:
        dictb[key] = value

更好

for key in dicta:
    if key not in dictb:
        dictb[key] = dicta[key]

答案 2 :(得分:0)

使用setdefault:dictb.setdefault(' age',30)