Есть ли способ в Python, чтобы получить конкретный список значений из списка dict? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть переменная и список, импортированный из Excel, который выглядит следующим образом:

cities= [{'City': 'Buenos Aires',
  'Country': 'Argentina',
  'Population': 2891000,
  'Area': 4758},
 {'City': 'Toronto',
  'Country': 'Canada',
  'Population': 2800000,
  'Area': 2731571},
 {'City': 'Pyeongchang',
  'Country': 'South Korea',
  'Population': 2581000,
  'Area': 3194},
 {'City': 'Marakesh', 'Country': 'Morocco', 'Population': 928850, 'Area': 200},
 {'City': 'Albuquerque',
  'Country': 'New Mexico',
  'Population': 559277,
  'Area': 491},
 {'City': 'Los Cabos',
  'Country': 'Mexico',
  'Population': 287651,
  'Area': 3750},
 {'City': 'Greenville', 'Country': 'USA', 'Population': 84554, 'Area': 68},
 {'City': 'Archipelago Sea',
  'Country': 'Finland',
  'Population': 60000,
  'Area': 8300},
 {'City': 'Walla Walla Valley',
  'Country': 'USA',
  'Population': 32237,
  'Area': 33},
 {'City': 'Salina Island', 'Country': 'Italy', 'Population': 4000, 'Area': 27},
 {'City': 'Solta', 'Country': 'Croatia', 'Population': 1700, 'Area': 59},
 {'City': 'Iguazu Falls',
  'Country': 'Argentina',
  'Population': 0,
  'Area': 672}]

Я просто хочу значение «Население» для каждого города.Какой самый эффективный или самый простой способ составить список со значением «Население» каждого города?

Ниже приведен код, который я придумал, но он неэффективен.

City_Population = [cities[0]['Population'], cities[1]['Population'], cities[2]['Population']]

В настоящее время я изучаю Python, и любые советы будут полезны!

Спасибо!

Ответы [ 2 ]

3 голосов
/ 05 апреля 2019

Использование списка:

print([city['Population'] for city in cities])

ВЫХОД :

[2891000, 2800000, 2581000, 928850, 559277, 287651, 84554, 60000, 32237, 4000, 1700, 0]

РЕДАКТИРОВАТЬ :

Предполагая, что естьнет population в city:

print([city['Population'] for city in cities if 'Population' in city])

ВЫХОД (удаление населения из нескольких городов в списке):

[2891000, 2800000, 2581000, 928850, 287651, 84554, 32237, 4000]
0 голосов
/ 05 апреля 2019

Используйте метод получения, таким образом, у вас будут пустые значения / нет значений, если некоторые из них не определены.

populations = [city.get('Population') for city in cities]

Если вам не нужны пустые значения:

populations = [pop for pop in populations if pop is not None]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...