列表重新格式化中的 Python 列表

标签 python list list-comprehension dictionary-comprehension

重组我的以下数据的 pythonic 方法是什么?

我有一个数据

data = [
        ['a','b',1], ['a','b',2], ['a','b',3],
        ['a','c',3], ['a','c',4],
        ['f','g',2], ['f','g',5], ['f','g',9]
       ]

我想将其重新排列为以下格式:

data = [
        ['a', 'b', 1, 2, 3], 
        ['a', 'c', 3, 4], 
        ['f', 'g', 2, 5, 9]
       ]

所以基本上每个内部列表中的前两个元素是区分不同项目的方式,后面的数字是数据。我只想为包含所有数据的每个项目留一行。

最佳答案

import collections

keyed = collections.defaultdict(list) # (a,b): [1,2,3]

for k1,k2,val in data:
    keyed[(k1,k2)].append(val)

[list(keys) + vals for keys,vals in sorted(keyed.items())]

关于列表重新格式化中的 Python 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36861715/

相关文章:

Python 与 iis 导入模块

python - 在 Django 中是否有同步的方法来验证模型?

r - 子集 R 中的列表向量

list - 给定一个 (a * b) 列表,返回一个 (a * b list) 列表

python - 如何在python中将二维数组合并为字符串

python - 安装 Python 3.6.5 但在 Docker 中获得 Python 3.6.6

python - 使用 Tensorflow Eager Execution 的 OpenAI 梯度检查点

python - 使用列表制作 pandas df

list-comprehension - 使用 if 语句列出理解 python

python - 为什么列表理解中的元组需要括号?