2012-02-07 82 views
0

我有一個關於this問題的接受答案的問題。python字典,如何轉換它

你能解釋一下爲什麼這個代碼:

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

做的工作,即它結合項目與同一密鑰列表英寸

+1

這個問題很差,請澄清。 – Kekoa 2012-02-07 18:52:45

回答

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中所述,並將生成的字典存儲在列表中。
3

表達式的括號使其成爲list comprehension。基本上,左邊部分({'type':k, 'items':v})針對每個項目進行評估,並將結果製成列表。

res.items返回字典中每個條目的鍵和值的元組。

再說說輸入res{'a': 7, 'b': 9}(這是映射的字典a7b9然後,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} 
0
[{'type':k, 'items':v} for k,v in res.items()] 

這意味着正是它似乎是說:「由(看起來像一本字典:{'type': k, 'items': v})的列表,包含在每個k, vres.items()「。