2013-12-12 9 views
8

の追加リストをだから私はタプルのこの配列がありますPythonのタプル、キー

[(u'030944', u'20091123', 10, 30, 0), (u'030944', u'20100226', 10, 15, 0)] 

をそして、私はフィールド名のリストを持っている:

['id', 'date', 'hour', 'minute', 'interval'] 

私がしたい、で

[{ 
    'id': u'030944', 
    'date': u'20091123', 
    'hour': 10, 
    'min': 30, 
    'interval': 0, 
},{ 
    'id': u'030944', 
    'date': u'20100226', 
    'hour': 10, 
    'min': 15, 
    'interval': 0, 
}] 
+0

そして、何を試してみましたか? –

+0

@LutzHornこれまでのところ何もありませんでしたが、この時点での私の唯一の攻撃計画はリストをループし、リストのすべての要素を5つの異なる変数に引き込み、それらの5つの変数をdictに追加して新しいリストにプッシュすることです。だから私は本当にキーリストを全く使っていないだろう。この方法は私にとって非常に面倒だと思われるので、よりクリーンな方法が必要であると思った。 – DanH

答えて

22
data = [(u'030944', u'20091123', 10, 30, 0), (u'030944', u'20100226', 10, 15, 0)] 
fields = ['id', 'date', 'hour', 'minute', 'interval'] 
dicts = [dict(zip(fields, d)) for d in data] 
:1は、可能な場合は辞書にタプルのリストを変換するために、一挙に

説明するには、zipは1つ以上のシーケンスを取り、各入力シーケンスの最初の要素、2番目のタプルなどを返します。dictコンストラクタはキー/値タプルのシーケンスを取り、辞書オブジェクトを構築します。この場合、データリストを繰り返し、固定されたキーのリストで値の各タプルを圧縮し、キー/値のペアの結果のリストから辞書を作成します。

+0

短い&甘い、いいリストの理解を使います。 – henrebotha

+0

ああクール、ジップ()は私に新しいです、ありがとう:) – DanH

2
import json 

ts = [(u'030944', u'20091123', 10, 30, 0), (u'030944', u'20100226', 10, 15, 0)] 
fs = ['id', 'date', 'hour', 'minute', 'interval'] 
us = [] 

for t in ts: 
    us.append(dict(zip(fs, t))) 

print(json.dumps(us)) 

結果:

[ 
    { 
     "date": "20091123", 
     "interval": 0, 
     "minute": 30, 
     "id": "030944", 
     "hour": 10 
    }, 
    { 
     "date": "20100226", 
     "interval": 0, 
     "minute": 15, 
     "id": "030944", 
     "hour": 10 
    } 
] 
関連する問題