2012-02-07 6 views
0

thisのための受け入れられた答えについて質問があります。python辞書、それをどのように変換する

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

仕事をする、すなわち、それは同じキーで一覧表示する項目を組み合わせた:

あなたは、このコードは、理由を説明してもらえます。

+1

この質問は不十分です。明確にしてください。 – Kekoa

答えて

7

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

を説明してもらえさんはそれを離れてみましょう:resのエントリを超える

  1. for k,v in res.items()反復処理し、それぞれkvに各キーと値を割り当てます。
  2. {'type':k, 'items':v}は、2要素の辞書を作成します。最初の要素はキー'type'と値kです。 2番目の要素はキー'items'と値vです。
  3. リストの理解[...]の効果は、手順2で説明したようにresの各エントリが辞書に変換され、結果の辞書がリストに格納されるということです。
3

式のまわりの角かっこは、list comprehensionになります。基本的に左の部分({'type':k, 'items':v})が各項目について評価され、結果がリストになります。

res.itemsは、辞書の各エントリのキーと値のタプルを返します。

は、入力 resはそれがマップされた辞書だ {'a': 7, 'b': 9}(と言う a 7へと b 9に続いて、 res.items()は以下のとおりです。

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

基本的に不変のリストで、中括弧はタプルを作るラウンド、 list comprehensionの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, vペアのためにres.items() "。

関連する問題