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

Dom*_*ell 9 python

我刚遇到这行python:

order.messages = {c.Code:[] for c in child_orders}
Run Code Online (Sandbox Code Playgroud)

我不知道它在做什么,除了它循环遍历列表child_orders并将结果放入order.messages.

它做了什么,它叫什么?

Pau*_*aul 15

这是一个词典理解.

这就像列表理解一样

 [3*x for x in range(5)]
 --> [0,3,6,9,12]
Run Code Online (Sandbox Code Playgroud)

除了:

{x:(3*x) for x in range(5)}
---> { 0:0, 1:3, 2:6, 3:9, 4:12 }
Run Code Online (Sandbox Code Playgroud)
  • 产生一个Python dictionary,而不是一个list
  • 使用花括号{}而不是方括号[]
  • 根据列表的迭代定义键:值

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

您发布的代码:

order.messages = {c.Code:[] for c in child_orders}
Run Code Online (Sandbox Code Playgroud)

相当于这段代码:

order.messages = {}
for c in child_orders:
    order.messages[c.Code] = []
Run Code Online (Sandbox Code Playgroud)

也可以看看:


pus*_*kin 11

这是字典理解!

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

更多信息在这里.