Страницы

Поиск по вопросам

вторник, 2 апреля 2019 г.

Из одного списка сделать два вложенных друг в друга. Python

Есть список в формате:
list = [["f1", "object1"],["f1", "object2"],["f2", "object3"],["f2", "object4"],]
Пытаюсь сделать следующим образом:
ll = [] for g in groupby( sorted(list,key=lambda x:x[1]) ,key=lambda x:x[1]): ll.append(g[0])
for i in g[1]: ll.append(i[0])
Но на выходе получаю не совсем то, что нужно. Получаю одномерный список следующего формата:
list3 = ["f1", "object1", "object2", "f2", "object3", "object4"]
Мне необходимо его сгруппировать так, чтобы на выходе получался следующий формат
listGroup = [["f1", ["object1", "object2"]], ["f2", ["object3", "object4"]]]


Ответ

in_l = [["f1", "object1"], ["f1", "object2"], ["f2", "object3"], ["f2", "object4"],]
from collections import defaultdict
temp_dict = defaultdict(list)
for fn, objn in in_l: temp_dict[fn].append(objn)
out_l = [list(item) for item in temp_dict.items()] print(out_l) # [['f1', ['object1', 'object2']], ['f2', ['object3', 'object4']]]

Комментариев нет:

Отправить комментарий