nation_list
- объект списка.Поскольку вы перебираете список, используйте i.short_name
.Также вы можете упростить код, используя dict.setdefault
и dict.update
Пример:
class Nation:
def __init__(self, short_name, long_name, iso_code, iso_short, iso_long, capital):
self.short_name = short_name
self.long_name = long_name
self.iso_code = iso_code
self.iso_short = iso_short
self.iso_long = iso_long
self.capital = capital
def to_dictionaries(nation_list):
result = {}
for i in nation_list:
result.setdefault(i.short_name, {}).update({"long_name": i.long_name, "iso_code": i.iso_code, "iso_short": i.iso_short, "iso_long": i.iso_long, "capital": i.capital})
return result
new_nation_1 = Nation("Albania", "Republic of Albania", 8, "AL", "ALB", "Tirana")
new_nation_2 = Nation("Angola", "Republic of Angola", 24, "AO", "AGO", "Luanda")
nation_list = [new_nation_1, new_nation_2]
print(to_dictionaries(nation_list))
Выход:
{'Albania': {'capital': 'Tirana',
'iso_code': 8,
'iso_long': 'ALB',
'iso_short': 'AL',
'long_name': 'Republic of Albania'},
'Angola': {'capital': 'Luanda',
'iso_code': 24,
'iso_long': 'AGO',
'iso_short': 'AO',
'long_name': 'Republic of Angola'}}