Python:转换字典中的元组列表

标签 python django dictionary

想知道是否有更惯用的(Pythonic)方式来做到这一点。我有一个由游标对象返回的元组列表,并且我正在尝试将数据重新分组到字典中。我得到的数据格式如下:

[("Département d'informatique", 119, 74, 193),
 ("Département d'informatique", 193, 67, 260), 
 ("Département de chimie", 355, 44, 399) ... ]

请注意,部门会重复。同一部门的每条线代表不同类型的数据。我需要在包含键(部门名称)的字典中重新组合该数据,该值将是将该部门作为其第一个成员的所有元组的列表。所以像这样:

{ "Département d'informatique": [(119, 74, 193), (193,67,260) ...] }

这是我的代码。它目前正在工作,但我不确定这是否是最有效/Pythonic 的做事方式。

def preparer_donnees(data):
    ret = { ligne[0] : [] for ligne in data }

    for ligne in data:
        for entree in ligne[1:]:
            ret[ligne[0]].append(entree)

    return ret

谢谢!

最佳答案

我会使用 collections.defaultdict :

def preparer_donnees(data):
    from collections import defaultdict

    ret = defaultdict(list)

    for v in data:
        ret[v[0]].append(v[1:])

    return ret

关于Python:转换字典中的元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24023208/

相关文章:

python - SQLAlchemy 记录更改日期和用户

python - 每个答案都有多个分数类别的 Django 调查问卷

django - 保存模型 int() 参数必须是字符串或数字,而不是 'tuple'

c++ - 如何在 double 组上定义比较运算符(小于)?

python - python中的嵌套lambda表达式map和reduce

javascript - 对象数组,用于累积另一个属性相同的所有对象属性

python - 将列表附加到现有数据框

python - 评分统计模型 Logit

python - 使用合适的填充将整数转换为二进制数组

python - 用于对象历史的 Model Mixin