Как найти значения specificity в словаре для повторяющихся заголовков с тем же именем?

#python #jupyter-notebook

#python #jupyter-notebook

Вопрос:

Я создал словарь с именем «city_metrics», который содержит такие заголовки, как Город, Страна, Население, Площадь. В моем словаре есть 3 города, 3 Населения и 3 Являются.

 city_metrics =
[{'City': 'Santiago',
  'Country': 'Dominican Republic',
  'Population': 900000,
  'Area': 4758},
 {'City': 'Montreal',
  'Country': 'Canada',
  'Population': 345000,
  'Area': 2731571},
 {'City': 'Seoul',
  'Country': 'South Korea',
  'Population': 234540,
  'Area': 3454},
 {'City': 'Marakesh', 
 'Country': 'Morocco', 
 'Population': 928850,
 'Area': 200}]
  

Как я могу перечислить только совокупность из этого словаря? Есть ли другой подход, помимо ввода всех этих строк?

 print city_metrics[0]['Population']

print city_metrics[1]['Population']

print city_metrics[2]['Population']

print city_metrics[3[['Population']
  

Комментарии:

1. это -> docs.python.org/3/tutorial/controlflow.html#for-statements — отличное место для начала

2. city_matrics это не словарь. Это список словарей, который представляет собой совершенно другого зверя.

Ответ №1:

 city_metrics = [
    {'City': 'Santiago', 'Country': 'Dominican Republic', 'Population': 900000, 'Area': 4758},
    {'City': 'Montreal', 'Country': 'Canada', 'Population': 345000, 'Area': 2731571},
    {'City': 'Seoul', 'Country': 'South Korea', 'Population': 234540, 'Area': 3454},
    {'City': 'Marakesh', 'Country': 'Morocco', 'Population': 928850, 'Area': 200}
]

for i in city_metrics:
    print(i['City'],i["Population"])
  

это должно сделать это за вас. если вам нужно напечатать ключи. просто передайте dictionary .items

Ответ №2:

Вы перебираете свой список таким образом:

 metrics = [
    {'City': 'Santiago', 'Country': 'Dominican Republic', 'Population': 900000, 'Area': 4758}, 
    {'City': 'Montreal', 'Country': 'Canada', 'Population': 345000, 'Area': 2731571},
    {'City': 'Seoul', 'Country': 'South Korea', 'Population': 234540, 'Area': 3454},
    {'City': 'Marakesh', 'Country': 'Morocco', 'Population': 928850, 'Area': 200}
]

for metric in metrics:
    print(metric['City'], metric['Population'])
  

Другим подходом был бы словарь словарей:

 cities = {
    'Santiago': {'Country': 'Dominican Republic', 'Population': 900000, 'Area': 4758}, 
    'Montreal': {'Country': 'Canada', 'Population': 345000, 'Area': 2731571},
    'Seoul': {'Country': 'South Korea', 'Population': 234540, 'Area': 3454},
    'Marakesh': {'Country': 'Morocco', 'Population': 928850, 'Area': 200}
}
  

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

 print(cities['Montreal']['Population'])
  

Или выполнить итерацию по городам, подобным этому:

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

Ответ №3:

Вы можете создать список совокупностей, выполнив следующее.

 populations = [city['Population'] for city in city_metrics]
  

В качестве альтернативы вы можете сделать for loop , в котором вы печатаете название города и население.

 for city in city_metrics:
    print(city['Population'])
  

Вы также можете отформатировать свой ответ таким образом, чтобы это имело смысл, например, напечатав название города и население.

 cities_and_pops = [f"The population of {city['City']} is {city['Population']}." for city in city_metrics]
cities_and_pops
>>>['The population of Santiago is 900000.',
 'The population of Montreal is 345000.',
 'The population of Seoul is 234540.',
 'The population of Marakesh is 928850.']