Используя zip
, мы можем создать словарь для каждой страны и получить оттуда.
for country, gdp, pop in zip(countries, GDP, population):
yield {"country_name": country, "GDP": gdp, "population": pop}
Причина, по которой ваш код не работает, заключается в том, что генератор просто выдаст один Огромный словарь, где каждое значение представляет собой весь список countries
, GDP
и population
соответственно. Чтобы исправить это, вы захотите создать словарь для каждой страны и выдавать каждый элемент на каждый вызов next
, как показано выше.
Чтобы проверить генератор, попробуйте
gen = parse(response) # or self.parse(response) depending on context
print(next(gen))
print(next(gen))
Каждый раз next
вызывается, генератор выдаст другой словарь, соответствующий новой стране.