我遇到了一个关于通过两个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中没有空白空间?
我怎么能解决这个问题?
感谢您的回复!
最好的问候,卡罗。
答案 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)