Python-从列表中提取值

时间:2020-01-27 20:25:56

标签: python list

我有一个列表列表:

list_1 = [['1','a'],['1','b'],['1','c'],['2','a'],['2','d'], ['1','c']]  

当按第一个值分组时,如何遍历列表以将第二个值附加到另一个列表。所以看起来像这样:

list_2 = [['a','b','c','c'],['a','d']]

2 个答案:

答案 0 :(得分:1)

一种方法是分两个步骤-首先,在list_1中找到唯一的“键”,然后根据这些键将list_1过滤到多个列表中。

unique_keys = set(elem[0] for elem in list_1)
list_2 = [[elem[1] for elem in list_1 if elem[0] == key]
         for key in unique_keys]
# [['a', 'd'], ['a', 'b', 'c', 'c']]

该集合按给定key的最后出现顺序排序,这就是为什么输出比预期的要落后的原因。要解决此问题,请改用set(elem[0] for elem in reversed(list_1))

答案 1 :(得分:1)

使用defaultdict

from collections import defaultdict

res=defaultdict(list)

for key,val in list_1:
    res[key]+=val
#res looks like this {'1': ['a', 'b', 'c', 'c'], '2': ['a', 'd']}
print(list(res.values())) # [['a', 'b', 'c', 'c'], ['a', 'd']]