Python работа со списком

такая задача, есть список, например ['Slovakia, 2005', 'Slovakia, 2010', 'Slovakia, 2015', 'Slovakia, 2016', 'Slovakia, 2017', 'Slovenia, 1995', 'Slovenia, 2000', 'Slovenia, 2005', 'Solomon Islands, 2015', 'Solomon Islands, 2016', 'Solomon Islands, 2017', 'Somalia, 1990', 'Somalia, 1995', 'Somalia, 2000', 'Somalia, 2005',]

надо вывести новый список c разницей в кол-ве лет(например, "словакия 2017 - 2005 = 12 лет"), вот пример конечного результата:

['Slovakia, 12 лет', 'Slovenia, 10 лет' и т.д.]

т.к. я только учусь, максимум смог сделать так, работает, но стран в списке очень много и надо как то автоматизировать

    list = []
    result = []
    for i in count_years:
        if i.split(',')[0] == country[0]:
            list.append(int(i.split(',')[1]))
    result.append(f"{country[0]}, {list[-1] - list[0]} лет")
    for i in count_years:
        if i.split(',')[0] == country[1]:
            list.append(int(i.split(',')[1]))
    result.append(f"{country[1]}, {list[-1] - list[0]} лет")
    print(result)

Ответы (2 шт):

Автор решения: gil9red

Действия:

  • Сбор данных, перебираю список стран с годами, вытаскиваю страну, год и заполняю словарь, где ключом будет страна, а значением список годов
  • Перебор словаря стран с нахождением минимального и максимального года (тут кст можно вместо min и max использовать сортировку), и генерацией результата

Пример:

countries = [
    'Slovakia, 2005', 'Slovakia, 2010', 'Slovakia, 2015', 'Slovakia, 2016', 'Slovakia, 2017', 'Slovenia, 1995',
    'Slovenia, 2000', 'Slovenia, 2005', 'Solomon Islands, 2015', 'Solomon Islands, 2016', 'Solomon Islands, 2017',
    'Somalia, 1990', 'Somalia, 1995', 'Somalia, 2000', 'Somalia, 2005'
]
country_by_years = dict()
for x in countries:
    country, year = x.split(', ')
    if country not in country_by_years:
        country_by_years[country] = []

    country_by_years[country].append(int(year))

countries_diff = []
for country, years in country_by_years.items():
    min_year, max_year = min(years), max(years)
    countries_diff.append(f'{country} {max_year} - {min_year} = {max_year - min_year} лет')

print(countries_diff)

Результат:

['Slovakia 2017 - 2005 = 12 лет', 'Slovenia 2005 - 1995 = 10 лет', 'Solomon Islands 2017 - 2015 = 2 лет', 'Somalia 2005 - 1990 = 15 лет']
→ Ссылка
Автор решения: strawdog

можно так:

lst = ['Slovakia, 2005', 'Slovakia, 2010', 'Slovakia, 2015', 'Slovakia, 2016', 'Slovakia, 2017', 'Slovenia, 1995',
       'Slovenia, 2000', 'Slovenia, 2005', 'Solomon Islands, 2015', 'Solomon Islands, 2016', 'Solomon Islands, 2017',
       'Somalia, 1990', 'Somalia, 1995', 'Somalia, 2000', 'Somalia, 2005',]

res = {}
[res.setdefault(x.split(",")[0], [int(x.split(",")[1])]).append(int(x.split(",")[1])) for x in lst]
res = [f"{k} - {(max(v)-min(v))} лет" for k, v in res.items()]
print(res)

['Slovakia - 12 лет', 'Slovenia - 10 лет', 'Solomon Islands - 2 лет', 'Somalia - 15 лет']

→ Ссылка