这个包含花括号和for循环的python表达式是什么?

What is this python expression containing curly braces and a for in loop?

我刚遇到这条Python线:

1
order.messages = {c.Code:[] for c in child_orders}

我不知道它在做什么,只知道它正在循环遍历清单child_orders,并将结果放入order.messages

它做什么,叫什么?


这是听写理解。

就像一个清单理解

1
2
 [3*x for x in range(5)]
 --> [0,3,6,9,12]

除了:

1
2
{x:(3*x) for x in range(5)}
---> { 0:0, 1:3, 2:6, 3:9, 4:12 }

  • 生成python dictionary,而不是list
  • 使用大括号{}而不是方括号[]
  • 定义键:基于列表迭代的值对

在您的情况下,键来自每个元素的Code属性,并且该值始终设置为空数组[]

您发布的代码:

1
order.messages = {c.Code:[] for c in child_orders}

等同于此代码:

1
2
3
order.messages = {}
for c in child_orders:
    order.messages[c.Code] = []

另请参见:

  • 政治公众人物0274
  • Python字典理解

这是字典理解!

它迭代child_orders并创建一个字典,其中键是c.Code,值是[]

更多信息。