【问题标题】:How to reorganize a list of tuples?如何重新组织元组列表?
【发布时间】:2018-01-10 00:40:48
【问题描述】:

假设我有一个元组列表:

[(98, 'studentA'), (97, 'studentB'), (98, 'studentC'), (95,'studentD')]

我想组织它,以便学生按元组中的第一个数字分组,最好的方法是什么?

我正在考虑创建一个列表数组,其中数组的每个索引都是不同的分数(本例中为 98、97 和 95),学生将在该索引处的列表中。对于一个更大的数据集,我正在考虑创建一个链式哈希表,但我不确定将它分配到什么位置,以保证两个不同的分数不会被哈希到同一个位置。

【问题讨论】:

  • 可能最简单的方法就是将列表折叠成字典,其中的关键是分数。索引的想法是可行的,但是你有一个不必要的巨大数组,其中大部分元素是None

标签: python hashtable


【解决方案1】:

为什么不使用dictcollections.defaultdict 也可以:

d = defaultdict(list)
for score, student in l:
    d[score] += student

【讨论】:

    【解决方案2】:

    尝试使用带数字键的排序

    sorted(students, key=(lambda x: x[0]))
    

    但是对于大型数据集来说,字典会更好

    【讨论】:

      猜你喜欢
      • 2019-05-20
      • 2017-02-15
      • 2021-04-22
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      相关资源
      最近更新 更多