![](/img/trans.png)
[英]Why does this code only work when i use 'x,y = y,x + y format instead of 'x = y; y = x + y'?
[英]how does “x:set() for x in y” work?
我正在查看一个实现拓扑排序的python代码,发现以下代码
data.update({item:set() for item in extra_items_in_deps})
我知道data.update
做什么,但是不确定如何:
item:set() for item in extra_items_in_deps
作品。
这是字典的理解。 它具有以下语法:
{ k: v for item in sequence }
这将为每个item
按键k
和值v
sequence
创建字典条目。
例如,下面的代码将创建一个字典,该字典使用序列(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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.