Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 9, 2017 21:32:38

Dmitry15
Зарегистрирован: 2017-08-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена элементов вложенного списка и удаление повторяющихся элементов

Добрый вечер!
Имеется вложенный список:

 l=[[1, 2], [2, 3], [1, 1], [2, 1],[3,0],[4,1],[1,2]]
, который необходимо привести к такому виду, чтобы во всех элементах
 l[i]
, у которых
 l[i][0]
одно и то же, то значение
 l[i][1]
было изменено на сумму значений
 l[i][1]
при одинаковых значениях
 l[i][0]
. Надеюсь, понятно изложил)
На всякий случай ожидаемый результат:
 l=[[1, 5], [2, 4], [1, 5], [2, 4],[3,0],[4,1],[1,5]]

Ну а затем, повторяющиеся элементы были удалены:
 l=[[1, 5], [2, 4],[3,0],[4,1]]

Можно ли как-то реализовать, используя цикл?
 for i in range(len(l)):
	for j in range(i+1,len(l)):
		if l[i][0]==l[j][0]:
                ......
Буду благодарен за предложения!

Отредактировано Dmitry15 (Авг. 9, 2017 21:48:30)

Офлайн

#2 Авг. 9, 2017 21:39:10

Dmitry15
Зарегистрирован: 2017-08-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена элементов вложенного списка и удаление повторяющихся элементов

Вдогонку исходный список и ожидаемые результаты

Прикреплённый файлы:
attachment 123.py (431 байт)

Офлайн

#3 Авг. 9, 2017 21:39:11

Dmitry15
Зарегистрирован: 2017-08-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена элементов вложенного списка и удаление повторяющихся элементов

Вдогонку исходный список и ожидаемые результаты

Прикреплённый файлы:
attachment 123.py (431 байт)

Офлайн

#4 Авг. 9, 2017 21:39:11

Dmitry15
Зарегистрирован: 2017-08-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена элементов вложенного списка и удаление повторяющихся элементов

Вдогонку исходный список и ожидаемые результаты

Прикреплённый файлы:
attachment 123.py (431 байт)

Офлайн

#5 Авг. 10, 2017 05:39:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10014
Репутация: +  857  -
Профиль   Отправить e-mail  

Замена элементов вложенного списка и удаление повторяющихся элементов

  
>>> lst = [[1, 2], [2, 3], [1, 1], [2, 1], [3, 0], [4, 1], [1, 2]]
>>> 
>>> out = []
>>> 
>>> ilst = (i[0] for i in lst)
>>> for i in ilst:
...     item = [i, 0]
...     for a, b in lst:
...         if a == i:
...             item[1] += b
...     if item not in out:
...         out.append(item)
... 
>>> out
[[1, 5], [2, 4], [3, 0], [4, 1]]
>>>



Офлайн

#6 Авг. 10, 2017 05:58:49

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Замена элементов вложенного списка и удаление повторяющихся элементов

 from collections import OrderedDict
lst = [[1, 2], [2, 3], [1, 1], [2, 1], [3, 0], [4, 1], [1, 2]]
dct = OrderedDict()
for k, v in lst:
    dct.setdefault(k, 0)
    dct[k] += v
res = [[k, v] for k, v in dct.items()]
print(res)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version