我有dict并列出如下:
a = {'aaa': 1, 'bbb': 2, 'ccc': 3}
b = ['aaa', 'bbb', 'ddd', 'eee']
我正在比较d b
中的列表a
,我正在打印'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中的值分配给零。
答案 0 :(得分:2)
你是否想要做这样的事情:
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
进行打印吗?如果你是,不要那样做!您可以在Why should exec() and eval() be avoided?找到有关eval
的完整讨论。
无论如何,我猜你可能正在寻找类似的东西:
print sum(a[key] for kay in b)
但我真的不知道。请编辑您的问题,解释您真正想要做的事情(包括输入和预期输出的样本)。
答案 1 :(得分:1)
试试这个
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
答案 2 :(得分:0)