Есть список в формате:
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']]]
Комментариев нет:
Отправить комментарий