Найти - Пользователи
Полная версия: Замена элементов вложенного списка и удаление повторяющихся элементов
Начало » Python для новичков » Замена элементов вложенного списка и удаление повторяющихся элементов
1
Dmitry15
Добрый вечер!
Имеется вложенный список:
 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
Вдогонку исходный список и ожидаемые результаты
Dmitry15
Вдогонку исходный список и ожидаемые результаты
Dmitry15
Вдогонку исходный список и ожидаемые результаты
py.user.next
  
>>> 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]]
>>>
FishHook
 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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB