Python - извлечение значений из списка - PullRequest
0 голосов
/ 27 января 2020

У меня есть список списков:

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

Как я могу перебрать список, чтобы добавить второе значение в другой список при группировании по первому значению. Так это будет выглядеть примерно так:

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

Ответы [ 2 ]

1 голос
/ 27 января 2020

Использование 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']]
1 голос
/ 27 января 2020

Один из способов сделать это состоит из двух шагов - сначала найдите уникальные «ключи» в 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)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...