python:按列对多维列表进行分组。最快的方式

时间:2017-11-04 01:15:18

标签: python list grouping

有一个像

这样的列表
[
[name, title, amount, 'en', category],
[name, title, amount, 'en', category],
[name, title, amount, 'it', category],
[name, title, amount, 'it', category],
[name, title, amount, 'it', category],
[name, title, amount, 'es', category],
]

我想按语言对列表进行划分和分组。 例如,下面的列表将是

[
[name, title, amount, 'en', category],
[name, title, amount, 'en', category]
]

[
[name, title, amount, 'it', category],
[name, title, amount, 'it', category],
[name, title, amount, 'it', category]
]

[
[name, title, amount, 'es', category]
]

如果它是字典或列表或元组并不重要。我希望它快。

然后对于按语言划分的任何分组数组,我想按类别对它们进行分组。 我的问题是我事先并不知道不同的语言和类别,因此我考虑在整个列表之前扫描以记录所有不同的语言和类别,然后对每个人使用列表理解。但我很确定它不是一种有效的方法

1 个答案:

答案 0 :(得分:1)

我希望这可能对你有所帮助:

def getMap(data,index):
res = {}
for v in data:
    if(v[index] in res):
        res[v[index]].append(v)
    else:
        res[v[index]] = [v]
return res
print(getMap(a,3))