“x:set()for x in y”是如何工作的?

时间:2015-08-11 18:12:05

标签: python python-2.7 python-3.x

我正在查看一个实现拓扑排序的python代码,并找到以下代码

data.update({item:set() for item in extra_items_in_deps})

我知道data.update做了什么但不确定如何:

item:set() for item in extra_items_in_deps  

作品。

1 个答案:

答案 0 :(得分:3)

这是字典理解。它具有以下语法:

{ k: v for item in sequence }

这将为itemsequence的每个k创建一个字典条目,其中包含密钥v和值(1, 2, 3)

例如,以下内容将使用序列>>> { x: x**2 for x in (1, 2, 3) } {1: 1, 2: 4, 3: 9} 中的键创建一个字典,并将平方数作为值:

{ item: set() for item in extra_items_in_deps }

在您的情况下,您有以下词典理解:

extra_items_in_deps

这将创建一个包含extra_items_in_deps = [1, 2, 3]密钥的字典,并为每个密钥创建一个新的。所以假设{ 1: set(), 2: set(), 3: set() } ,它等同于这个词典:

data.update()

然后将此词典传递给data,使用传递的字典中的键值对更新字典android:layout_width="0dp"