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

通过python中的两个字典添加缺少的数据,python,dictionary,Python,Dictionary,我遇到了一个关于通过两个python字典添加数据的小问题 这是我的密码: dicta = {'name' : 'character', 'age': 30 } dictb = {'name' : 'Jon'} 我想在dictb中添加键和值“age”:30。 因此,我: for i in dicta: for j in dictb: if(i not in dictb): dictb.update(i) 然后没有添加任何内容,我遇到了以下问题:

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

这是我的密码:

dicta = {'name' : 'character', 'age': 30 }
dictb = {'name' : 'Jon'}
我想在dictb中添加键和值“age”:30。 因此,我:

for i in dicta:
    for j in dictb:
        if(i not in dictb):
            dictb.update(i)
然后没有添加任何内容,我遇到了以下问题:

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

这是因为我的字典里没有空格吗

我怎样才能解决这个问题

谢谢你的回复


问候您,Karro。

您不需要嵌套循环,因为您当前正在使用。只需迭代
dicta
的键,并检查该键是否存在于
dictb
中:

for k in dicta:
    if k not in dictb:
        dictb[k] = dicta[k]
现有代码的问题在于
i
是一个键,而不是一个字典。因此调用
dict.update(int)
失败。您希望(对于您现有的代码)具有以下内容:


同时仍然摆脱内部循环。

您不需要嵌套循环,因为您当前正在使用。只需迭代
dicta
的键,并检查该键是否存在于
dictb
中:

for k in dicta:
    if k not in dictb:
        dictb[k] = dicta[k]
现有代码的问题在于
i
是一个键,而不是一个字典。因此调用
dict.update(int)
失败。您希望(对于您现有的代码)具有以下内容:


同时仍然摆脱内部循环。

这将很好

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]

这会很好的

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]

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

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

请记住,
.items
/
.iteritems
是浪费,因为您将整个字典的副本创建为元组进行迭代。请记住,
.items
/
是浪费,因为您将整个字典的副本创建为元组进行迭代。好的,谢谢,它成功了!:)我得到了它。我很快就会接受你的回答!:)好的,谢谢,成功了!:)我得到了它。我很快就会接受你的回答!:)