Python 如何在eval中跳过变量值

Python 如何在eval中跳过变量值,python,Python,我有下面的口述和清单 a = {'aaa': 1, 'bbb': 2, 'ccc': 3} b = ['aaa', 'bbb', 'ddd', 'eee'] 我正在比较dicta中的列表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]])

我有下面的口述和清单

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


然后当我打印
“打印aaa、bbb、ccc、ddd”
时,它应该打印值。列表
b
中的变量可以变化,因此我应该动态地将
b
中不在a中的值指定为零。

我建议将代码更改为

for v in b:
    if v not in a:
        a[v]=0
    print a[v], '=', int(a[v])

您可以使用而不是
dict

您正在尝试这样做:

for key in b:
    print key, a.get(key,0)
for key in b:
    if a.get(key) is None:
        a[key] = 0
如果您真的需要将这些新键输入词典,您可以这样做:

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
进行打印?如果你是,不要那样做!您可以在关于
eval
的更完整的讨论中找到

不管怎样,我猜你可能在寻找这样的东西:

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

谢谢@riki poggi,但我想在eval('aaa+bbb+ccc',b)中为b中的键使用这些值:如果a.get(key)为None:a[key]=0 eval('aaa+bbb+ccc',b)@user1182090:你到底想做什么?请回答您的问题并提供更多信息。另外,您不应该使用我在上面提供的链接中解释的
eval
。抱歉@Rik。假设dict1={'a':1,'b':2,'c':3}和list1=['a','b','c','d']。我希望输出中的变量应该是动态生成的,并且应该包含dict1的'a','b'值,因为'a'和'b'存在于列表1中,对于'c'和'd',它应该包含“零”,因为列表1的'c'和'd'不在dict中,所以它包含零。我不希望这个输出值在dict的不同列表r中,它应该存储在变量中。所以我可以在任何地方使用它。。。Thanks@hochl但是你可以说如何动态地生成变量,然后我必须为它赋值。例如,通过比较dict“a”中的列表“b”,如果key是它们的值,它应该获取key的值,并动态生成变量并分配给它。最后,r不在列表“b”中的元素应分配为零和saved@user1182090:您所解释的是一个非常糟糕的设计,为什么您首先需要它?您可能有兴趣阅读以下内容:Thanks@lafada.. 输出值是我想要的,但是你能说如何将这些值存储到动态变量中,而不是一个或多个dict。。