Python列表Merg

2024-04-27 08:01:03 发布

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

假设我有一个这样的列表:(假设你不知道这个列表中有多少个列表)

list=[['food','fish'],['food','meat'],['food','veg'],['sports','football']..]

如何合并列表中的项目,如下所示:

list=[['food','fish','meat','veg'],['sports','football','basketball']....]

也就是说,如果所有嵌套列表包含相同的项之一,则将它们合并到同一个列表中。你知道吗


Tags: 项目列表foodlistsportsfishbasketballfootball
2条回答

替代defaultdict的“强制”选项可以更好地处理已经按键顺序排列的数据,如果您不想在其上构建数据结构(即,只处理组)。。。你知道吗

data = [['food','fish'],['food','meat'],['food','veg'],['sports','football']]

from itertools import groupby
print [[k] + [i[1] for i in v] for k, v in groupby(data, lambda L: L[0])]

但是defaultdict更灵活,更容易理解,所以请使用@Blender的答案。你知道吗

使用defaultdict创建一个字典,将类型映射到值,然后获取项:

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> items = [['food','fish'],['food','meat'],['food','veg'],['sports','football']]
>>> for key, value in items:
...     d[key].append(value)
...     
>>> [[key] + values for key, values in d.items()]
    [['food', 'fish', 'meat', 'veg'], ['sports', 'football']]

相关问题 更多 >