Python Tuple to Dict,带有额外的键列表

时间:2013-12-12 10:25:53

标签: python list-comprehension django-1.5

所以我有这个元组数组:

[(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,
}]

2 个答案:

答案 0 :(得分:24)

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]

为了解释,zip接受一个或多个序列,并返回一个元组序列,每个输入序列的第一个元素,第二个,等等。dict构造函数采用一系列键/ value元组并构造一个字典对象。因此,在这种情况下,我们遍历数据列表,使用固定的键列表压缩每个元组值,并从结果的键/值对列表中创建字典。

答案 1 :(得分: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
    }
]