Python按值拆分列表列表

2024-06-28 19:54:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把下面的列表分开

a = [["aa",1,3]
     ["aa",3,3]
     ["sdsd",1,3]
     ["sdsd",6,0]
     ["sdsd",2,5]
     ["fffffff",1,3]]

以下三个列表:

^{pr2}$

也就是说,根据每个列表的第一个值。我需要为一个包含数千个元素的列表。。。我怎样才能有效地做到这一点?在


Tags: 元素列表aapr2sdsdfffffff
3条回答

如果输入按第一个元素排序:

from itertools import groupby
from operator import itemgetter

a = [["aa",1,3],
     ["aa",3,3],
     ["sdsd",1,3],
     ["sdsd",6,0],
     ["sdsd",2,5],
     ["fffffff",1,3]]

b = { k : list(v) for k, v in groupby(a, itemgetter(0))}

创建一个以第一个元素为键、匹配列表为值的字典。您将得到一个字典,其中每个键值对的值将是具有相同第一个元素的列表组。例如

a = [["aa", 1, 3],
     ["aa", 3, 3],
     ["sdsd", 1, 3],
     ["sdsd", 6, 0],
     ["sdsd", 2, 5],
     ["fffffff", 1, 3]]
d = {}
for e in a:
    d[e[0]] = d.get(e[0]) or []
    d[e[0]].append(e)

你现在可以单独得到名单

^{pr2}$

你最好做一本字典。如果您真的想生成一堆变量,那么就必须使用globals(),这是不推荐的。在

a = [["aa",1,3]
     ["aa",3,3]
     ["sdsd",1,3]
     ["sdsd",6,0]
     ["sdsd",2,5]
     ["fffffff",1,3]]

d = {}
for sub in a:
    key = sub[0]
    if key not in d: d[key] = []
    d[key].append(sub)

或者

^{pr2}$

相关问题 更多 >