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

这个包含大括号和for in循环的python表达式是什么?,python,Python,我刚刚遇到了一行python: order.messages = {c.Code:[] for c in child_orders} 我不知道它在做什么,只知道它在列表child\u orders上循环,并将结果放入order.messages 它做什么?它叫什么?它是字典理解 它遍历子订单并创建一个字典,其中键为c.code,值为[] 更多信息。这是一个口述理解 sample_list = [2,4,6,8,9,10] dict = {val: val**2 for val in sampl

我刚刚遇到了一行python:

order.messages = {c.Code:[] for c in child_orders}
我不知道它在做什么,只知道它在列表
child\u orders
上循环,并将结果放入
order.messages


它做什么?它叫什么?

它是字典理解

它遍历
子订单
并创建一个字典,其中键为
c.code
,值为
[]

更多信息。

这是一个口述理解

sample_list = [2,4,6,8,9,10]
dict = {val: val**2 for val in sample_list if val**2 % 2 == 0}
print(dict)
//Output: {8: 64, 2: 4, 4: 16, 10: 100, 6: 36}
它就像一个列表

除:

{x:(3*x) for x in range(5)}
---> { 0:0, 1:3, 2:6, 3:9, 4:12 }
  • 生成Python
    字典
    ,而不是
    列表
  • 使用大括号
    {}
    而不是方括号
    []
  • 基于列表中的迭代定义键:值对
在您的情况下,键来自每个元素的
code
属性,并且值始终设置为空数组
[]

您发布的代码:

order.messages = {c.Code:[] for c in child_orders}
等同于此代码:

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


就像Python中的列表理解一样,它被称为字典理解

sample_list = [2,4,6,8,9,10]
dict = {val: val**2 for val in sample_list if val**2 % 2 == 0}
print(dict)
//Output: {8: 64, 2: 4, 4: 16, 10: 100, 6: 36}
上面的代码片段将数字映射到它们的偶数正方形