Необходимо сложить цифры с которых начинаются повторяющиеся значения
my_list = ['10 Волокамск',
'10 Белгородская область',
'10 Ростов-на-Дону',
'2 Барклай де Толли',
'2 Барклай де Толли',
'10 Орёл',
'10 Нальчик',
'10 50 лет первому полёту человека в космос',
'2 Новороссийск',
'2 Барклай де Толли',
'10 Гатчина',
'10 50 лет первому полёту человека в космос']
result = []
my_list.sort()
for i in range(0,len(my_list)-1):
if my_list[i] == my_list[i+1]:
result.append(my_list[i])
print(result)
Ответы (3 шт):
Автор решения: ivan_susanin
→ Ссылка
Если чуть испраить ваш код то получится так:
my_list = ['10 Волокамск',
'10 Белгородская область',
'10 Ростов-на-Дону',
'2 Барклай де Толли',
'2 Барклай де Толли',
'10 Орёл',
'10 Нальчик',
'10 50 лет первому полёту человека в космос',
'2 Новороссийск',
'2 Барклай де Толли',
'10 Гатчина',
'10 50 лет первому полёту человека в космос']
result = 0
my_list.sort()
for i in range(0,len(my_list)-1):
if my_list[i] == my_list[i+1]:
result += int(my_list[i].split()[0])
print(result)
Автор решения: Кирилл Малышев
→ Ссылка
from collections import Counter
from functools import reduce
my_list = ['10 Волокамск',
'10 Белгородская область',
'10 Ростов-на-Дону',
'2 Барклай де Толли',
'2 Барклай де Толли',
'10 Орёл',
'10 Нальчик',
'10 50 лет первому полёту человека в космос',
'2 Новороссийск',
'2 Барклай де Толли',
'10 Гатчина',
'10 50 лет первому полёту человека в космос']
print(reduce(lambda s, el: s + int(el[0].split()[0]) * (el[1] - 1), Counter(my_list).items(), 0))
Автор решения: Andy Pavlov
→ Ссылка
Можно без дополнительных библиотек и сортировки через создание уникального сета, подсчета его вхождений (числа монет) в my_list через метод списка list.count() с фильтром на число монет больше одной:
my_list = ['10 Волокамск',
'10 Белгородская область',
'10 Ростов-на-Дону',
'2 Барклай де Толли',
'2 Барклай де Толли',
'10 Орёл',
'10 Нальчик',
'10 50 лет первому полёту человека в космос',
'2 Новороссийск',
'2 Барклай де Толли',
'10 Гатчина',
'10 50 лет первому полёту человека в космос']
print(sum(int(s.split(' ')[0]) * (my_list.count(s) - 1)
for s in set(my_list) if my_list.count(s) > 1))
# 14