首页 > 解决方案 > 基于类别对列表进行分组的算法

问题描述

我有两个这样的列表:

list1 = ['item1', 'item2', 'item3', 'item4', 'item5', 'item6']
list2 = ['sunday', 'sunday', 'monday', 'monday', 'tuesday', 'tuesday']

现在,我想根据list1类别对项目进行分组list2并从中制作字典,因此输出应如下所示:-

grouped = {'sunday': ['item1', 'item2'],
           'monday': ['item3', 'item4'],
           'tuesday': ['item5', 'item6']}

最快、最有效的方法是什么?

标签: pythonalgorithm

解决方案


from collections import defaultdict

list1 = ['item1', 'item2', 'item3', 'item4', 'item5', 'item6']
list2 = ['sunday', 'sunday', 'monday', 'monday', 'tuesday', 'tuesday']

grouped = defaultdict(list)

for v, k in zip(list1, list2):
    grouped[k].append(v)

grouped = dict(grouped) # So it isn't a defaultdict anymore

即使list2未排序,这也有效。


推荐阅读