Группировка в многомерном списке

Vitys

Новичок
Пользователь
Янв 14, 2022
4
0
1
Lst=[[1,3,1,2,1],[3,4,4]] надо получить
LS = [[[1,1,1],[2],[3]],[[3],[4,4]]
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 431
630
113
Lst=[[1,3,1,2,1],[3,4,4]] надо получить
LS = [[[1,1,1],[2],[3]],[[3],[4,4]]
Вот пример:
Python:
lst = [[1, 3, 1, 2, 1], [3, 4, 4]]

def group_list(lst_):
    d = {}
    for i in lst_:
        if d.get(i):
            d[i].append(i)
        else:
            d[i] = [i]
    return sorted(d.values())

lst2 = [group_list(i) for i in lst]
print(lst2)
 

Vitys

Новичок
Пользователь
Янв 14, 2022
4
0
1
Большущее спасибо!!!!
 

Vitys

Новичок
Пользователь
Янв 14, 2022
4
0
1
Не хочу показаться навязчивым, но если можно еще один решить затык.Решение у меня есть,но оно слишком заморочнное.
Пример:
Sp=[[2,4,6,3,3],[4,4,3,1,1]]
Key=6
Необходимо создать списки с суммой до как
out=[[[2,4],[3,3],[6]],[[4,],[4],[3,1,1]]]
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 431
630
113
Пример:
Sp=[[2,4,6,3,3],[4,4,3,1,1]]
Key=6
Необходимо создать списки с суммой до как
out=[[[2,4],[3,3],[6]],[[4,],[4],[3,1,1]]]
Вот пример:
Python:
lst = [[2, 4, 6, 3, 3], [4, 4, 3, 1, 1]]
key = 6

def group_list2(lst_):
    k = 0
    d = {k: []}
    for i in lst_:
        if sum(d[k]) + i <= key or d[k] == []:
            d[k].append(i)
        else:
            k += 1
            d[k] = [i]
    return sorted(d.values(), key=sum)

lst2 = [group_list2(i) for i in lst]
print(lst2)
 

Vitys

Новичок
Пользователь
Янв 14, 2022
4
0
1
Большущее спасибо!!!!!! То что надо
 

Форум IT Специалистов