Вы можете извлечь названия стран из списка кортежей, используя zip
, а затем использовать collection.Counter , чтобы противостоять частоте названий стран
from collections import Counter
country_city_tuples= [('Netherlands', 'Alkmaar'),
('Netherlands', 'Tilburg'),
('Netherlands', 'Den Bosch'),
('Netherlands', 'Eindhoven'),
('Spain', 'Madrid'),
('Spain', 'Barcelona'),
('Spain', 'Cordoba'),
('Spain', 'Toledo'),
('Italy', 'Milano'),
('Italy', 'Roma')]
#Extract out country names using zip and list unpacking
country_names, _ = zip(*country_city_tuples)
#Count the number of countries using Counter
print(dict(Counter(country_names)))
Toсделать это без использования collections
, мы можем использовать словарь для сбора частот
country_city_tuples= [('Netherlands', 'Alkmaar'),
('Netherlands', 'Tilburg'),
('Netherlands', 'Den Bosch'),
('Netherlands', 'Eindhoven'),
('Spain', 'Madrid'),
('Spain', 'Barcelona'),
('Spain', 'Cordoba'),
('Spain', 'Toledo'),
('Italy', 'Milano'),
('Italy', 'Roma')]
#Extract out country names using zip and list unpacking
country_names, _ = zip(*country_city_tuples)
result = {}
#Count each country
for name in country_names:
result.setdefault(name,0)
result[name] += 1
print(result)
Вывод будет одинаковым в обоих случаях
{'Netherlands': 4, 'Spain': 4, 'Italy': 2}