【问题标题】:Change List of Tuples into Dictionary (pythonic way)将元组列表更改为字典(pythonic 方式)
【发布时间】:2014-07-16 13:12:17
【问题描述】:

这更像是一个最佳实践问题。我创建的内容运行良好,但我很好奇是否有更短的方法可以根据我当前的数据结构创建字典。

我正在从 SQLite 数据库中读取表,数据以元组列表的形式返回。 例如

[(49, u'mRec49', u'mLabel49', 1053, 1405406806822606L, u'1405406906822606'), 
(48, u'mRec48', u'mLabel48', 1330, 1405405806822606L, u'1405405906822606'), 
(47, u'mRec47', u'mLabel47', 1220, 1405404806822606L, u'1405404906822606')...
] 

我想获取列表元组结构的每一列,使其成为一个列表,从数据库中获取列名并将其用作保存列表的键。后来我把我的字典变成了 JSON。

这是我的功能,它可以完成工作,我不禁想知道是否有更好的方法来做到这一点。

def make_dict(columns, list_o_tuples):
    anary = {}
    for j, column in enumerate(columns):
        place = []
        for row in list_o_tuples:
            place.append(row[j])
        anary[column] = place
    return anary

make_dict(mDBTable.columns, mDBTable.get_table())

注意:函数不应该关心它呈现的表格,或者表格中的数量或行和列。

【问题讨论】:

标签: python list sqlite dictionary tuples


【解决方案1】:

看来你要转置list_o_tuples:

transpose = zip(*list_o_tuples)

然后将其与列名一起压缩:

return dict(zip(columns, transpose))

【讨论】:

    【解决方案2】:

    您可以简单地解压缩list_o_tuples,然后使用字典推导式创建一个包含相应列数据和列标题的新字典

    columns = ["num1", "str1", "num2", "num3", "str2", "str3"]
    print {columns[idx]:row for idx, row in enumerate(zip(*list_o_tuples))}
    

    【讨论】:

    • 我知道你在那里做了什么。我什至不知道你能做到这一点!
    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 2012-11-25
    • 2019-11-19
    • 1970-01-01
    • 2013-04-01
    相关资源
    最近更新 更多