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

Posted

技术标签:

【中文标题】Python Tuple to Dict,带有额外的键列表【英文标题】:Python Tuple to Dict, with additional list of keys 【发布时间】:2013-12-30 17:00:50 【问题描述】:

所以我有这个元组数组:

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

【问题讨论】:

你试过什么? @LutzHorn 到目前为止一无所获,但我目前唯一的攻击计划是遍历列表,将列表中的所有元素拉入 5 个不同的变量中,然后将这 5 个变量添加到 dict 中并将其推送到新列表。所以我根本不会真正使用密钥列表。不过这种方法对我来说似乎很麻烦,所以我认为必须有一种更清洁的方法。 【参考方案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]

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

【讨论】:

简短而甜美,并使用了很好的列表理解。【参考方案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
    
]

【讨论】:

以上是关于Python Tuple to Dict,带有额外的键列表的主要内容,如果未能解决你的问题,请参考以下文章

python 处理json,list to dict

带有自定义列名的Python pandas.DataFrame.to_dict

Python collections

Python collections 񷡕

Python 中的 *tuple 和 **dict 是啥意思? [复制]

Python set list dict tuple 区别和相互转换