我有一个关于this问题的接受答案的问题。python字典,如何转换它
你能解释一下为什么这个代码:
[{'type':k, 'items':v} for k,v in res.items()]
做的工作,即它结合项目与同一密钥列表英寸
我有一个关于this问题的接受答案的问题。python字典,如何转换它
你能解释一下为什么这个代码:
[{'type':k, 'items':v} for k,v in res.items()]
做的工作,即它结合项目与同一密钥列表英寸
你能解释一下
[{'type':k, 'items':v} for k,v in res.items()]
让我们把它拆开:
for k,v in res.items()
迭代的res
项,分别给每个键和价值k
和v
。{'type':k, 'items':v}
创建一个双元素字典。第一个元素具有密钥'type'
和值k
;第二个元素的密钥为'items'
,值为v
。[...]
的作用是将res
中的每个条目转换为字典,如步骤2中所述,并将生成的字典存储在列表中。表达式的括号使其成为list comprehension。基本上,左边部分({'type':k, 'items':v}
)针对每个项目进行评估,并将结果制成列表。
res.items
返回字典中每个条目的键和值的元组。
再说说输入res
是{'a': 7, 'b': 9}
(这是映射的字典a
到7
和b
到9
然后,res.items()
是:
[('a', 7), ('b', 9)]
圆括号使一个元组,这基本上是不可变列表。列表理解中的for循环迭代元组元素,并临时将它们分配给k
和v
:
# First iteration
k = 'a'
v = 7
=> Add {'type': 'a', 'items': 7} to the result
# First iteration
k = 'b'
v = 9
=> Add {'type': 'b', 'items': 9} to the result
现在
,结果列表
[{'type': 'a', 'items': 7}, {'type': 'b', 'items': 9}
[{'type':k, 'items':v} for k,v in res.items()]
这意味着正是它似乎是说:“由(看起来像一本字典:{'type': k, 'items': v}
)的列表,包含在每个k, v
对res.items()
“。
这个问题很差,请澄清。 – Kekoa 2012-02-07 18:52:45