我有如下的dict和列表
a = {'aaa': 1, 'bbb': 2, 'ccc': 3}
b = ['aaa', 'bbb', 'ddd', 'eee']
我正在比较dict a
中的列表b
,并打印'aaa'
和'bbb'
的值,我不知道如何存储aaa=1
和bbb=2
的值。我正在尝试使用此代码
for i in range(0,len(b)):
if b[i] not in d:
continue
else:
print int(a[b[i]])
其打印
1
2
我想分配aaa=1,bbb=2,ddd=0,eee=0
。
然后当我打印"print aaa,bbb,ccc,ddd"
时,它应该打印值。列表b
中的变量可以变化,因此我应该动态地将b
中不在a中的值分配给零。
你想做这样的事情吗:
for key in b:
print key, a.get(key,0)
如果你真的需要把这些新钥匙输入你的字典,你可以这样做:
for key in b:
if a.get(key) is None:
a[key] = 0
然后像往常一样打印:
for k,v in a.items():
print k,v
编辑:从你的评论来看,你现在似乎在做:
eval('aaa+bbb+ccc',b)
for key in b:
if a.get(key) is None:
a[key] = 0
eval('aaa+bbb+ccc',b)
您是否使用eval
进行打印?如果你是,不要那样做!您可以在中找到为什么要避免exec()和eval()?关于CCD_ 12的更全面的讨论。
不管怎样,我猜你可能正在寻找这样的东西:
print sum(a[key] for kay in b)
但我真的不知道。请编辑你的问题,解释你真正想做什么(使用输入和预期输出的样本)。
试试这个
a = {'aaa': 1, 'bbb': 2, 'ccc': 3}
b = ['aaa', 'bbb', 'ddd', 'eee']
c = dict([(x, a.get(x, 0)) for x in a])
print "%(aaa)s %(bbb)s %(ccc)s" % c
我建议将代码更改为
for v in b:
if v not in a:
a[v]=0
print a[v], '=', int(a[v])
您可以使用defaultdict而不是dict
。