将值赋给python中的变量列表

时间:2016-07-28 08:30:18

标签: python

我做了一个更复杂问题的小演示

def f(a):
    return tuple([x for x in range(a)])

d = {}
[d['1'],d['2']] = f(2)
print d
# {'1': 0, '2': 1} 
# Works

现在假设密钥是以编程方式生成的 我如何在这种情况下实现同样的目标?

n = 10
l = [x for x in range(n)]
[d[x] for x in l] = f(n)
print d
# SyntaxError: can't assign to list comprehension

1 个答案:

答案 0 :(得分:1)

你不能,它是赋值语句的语法特征。如果你做了一些动态的事情,那么它将使用不同的语法,因此无法工作。

如果您有一些函数结果<tr ng-repeat="book in books | filter:query "> 和一个键列表f(),您可以使用keys创建一个可迭代的键和结果,然后循环它们:

zip

这很容易被改写成字典理解:

d = {}
for key, value in zip(keys, f()):
    d[key] = value

或者,在@JonClements提到的这种特殊情况下,即使是

d = {key: value for key, value in zip(keys, f())}