问题
So I have this array of tuples:
[(u'030944', u'20091123', 10, 30, 0), (u'030944', u'20100226', 10, 15, 0)]
And I have this list of field names:
['id', 'date', 'hour', 'minute', 'interval']
I would like to, in one fell swoop if possible, to convert the list of tuples to a dict:
[{
'id': u'030944',
'date': u'20091123',
'hour': 10,
'min': 30,
'interval': 0,
},{
'id': u'030944',
'date': u'20100226',
'hour': 10,
'min': 15,
'interval': 0,
}]
回答1:
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]
To explain, zip
takes one or more sequences, and returns a sequence of tuples, with the first element of each input sequence, the second, etc. The dict
constructor takes a sequence of key/value tuples and constructs a dictionary object. So in this case, we iterate through the data list, zipping up each tuple of values with the fixed list of keys, and creating a dictionary from the resulting list of key/value pairs.
回答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))
Result:
[
{
"date": "20091123",
"interval": 0,
"minute": 30,
"id": "030944",
"hour": 10
},
{
"date": "20100226",
"interval": 0,
"minute": 15,
"id": "030944",
"hour": 10
}
]
来源:https://stackoverflow.com/questions/20540871/python-tuple-to-dict-with-additional-list-of-keys