python字典,如何转换它

时间:2012-02-07 18:50:37

标签: python dictionary

我对this问题的已接受答案有疑问。

你能解释为什么这段代码:

[{'type':k, 'items':v} for k,v in res.items()]

完成这项工作,即它将要列出的项目组合在同一个键中。

3 个答案:

答案 0 :(得分:7)

  

你能解释[{'type':k, 'items':v} for k,v in res.items()]

吗?

让我们把它拆开:

  1. for k,v in res.items()遍历res的条目,分别将每个键和值分配给kv
  2. {'type':k, 'items':v}创建一个双元素字典。第一个元素包含键'type'和值k;第二个元素包含键'items'和值v
  3. 列表推导[...]的效果是res中的每个条目都会转换为字典,如步骤2中所述,并且生成的字典存储在列表中。

答案 1 :(得分:3)

表达式周围的括号使其成为list comprehension。基本上,对每个项目评估左侧部分({'type':k, 'items':v}),并将结果作为列表。

res.items返回字典中每个条目的键和值的元组。

说输入res{'a': 7, 'b': 9}(这是一个将a映射到7b9的词典然后,res.items()是:

[('a', 7), ('b', 9)]

圆括号构成一个元组,这基本上是一个不可变的列表。列表推导中的for循环遍历元组的元素,并暂时将它们分配给kv

# 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}

答案 2 :(得分:0)

[{'type':k, 'items':v} for k,v in res.items()]

这意味着它的确含义:“{'type': k, 'items': v}中包含的每个k, v对包含的字典(res.items()}的字典}。