我正在查看一个实现拓扑排序的python代码,并找到以下代码
data.update({item:set() for item in extra_items_in_deps})
我知道data.update
做了什么但不确定如何:
item:set() for item in extra_items_in_deps
作品。
答案 0 :(得分:3)
这是字典理解。它具有以下语法:
{ k: v for item in sequence }
这将为item
中sequence
的每个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"
。