首页 > 解决方案 > 在具有多个值的python中切换字典中的键和值

问题描述

给定这样的字典(来自 geonamescache 的数据):

{'3041563': {'geonameid': 3041563,
  'name': 'Andorra la Vella',
  'latitude': 42.50779,
  'longitude': 1.52109,
  'countrycode': 'AD',
  'population': 20430,
  'timezone': 'Europe/Andorra',
  'admin1code': '07'},
 '290594': {'geonameid': 290594,
  'name': 'Umm Al Quwain City',
  'latitude': 25.56473,
  'longitude': 55.55517,
  'countrycode': 'AE',
  'population': 62747,
  'timezone': 'Asia/Dubai',
  'admin1code': '07'},
 '291074': {'geonameid': 291074,
  'name': 'Ras Al Khaimah City',
  'latitude': 25.78953,
  'longitude': 55.9432,
  'countrycode': 'AE',
  'population': 351943,
  'timezone': 'Asia/Dubai',
  'admin1code': '05'},....

如何为dict中的所有项目切换值为'name'的键?这意味着城市名称将成为每个项目的关键。

预期输出:

{'Andorra la Vella': {'geonameid': 3041563,
  'latitude': 42.50779,
  'longitude': 1.52109,
  'countrycode': 'AD',
  'population': 20430,
  'timezone': 'Europe/Andorra',
  'admin1code': '07'},
 'Umm Al Quwain City': {'geonameid': 290594,
  'latitude': 25.56473,
  'longitude': 55.55517,
  'countrycode': 'AE',
  'population': 62747,
  'timezone': 'Asia/Dubai',
  'admin1code': '07'},
 'Ras Al Khaimah City': {'geonameid': 291074,
  'latitude': 25.78953,
  'longitude': 55.9432,
  'countrycode': 'AE',
  'population': 351943,
  'timezone': 'Asia/Dubai',
  'admin1code': '05'},....

标签: pythondictionary

解决方案


您是否正在寻找这样的输出?

{'Andorra la Vella': {'admin1code': '07',
  'countrycode': 'AD',
  'geonameid': 3041563,
  'latitude': 42.50779,
  'longitude': 1.52109,
  'name': 'Andorra la Vella',
  'population': 20430,
  'timezone': 'Europe/Andorra'},
 'Ras Al Khaimah City': {'admin1code': '05',
  'countrycode': 'AE',
  'geonameid': 291074,
  'latitude': 25.78953,
  'longitude': 55.9432,
  'name': 'Ras Al Khaimah City',
  'population': 351943,
  'timezone': 'Asia/Dubai'},
 'Umm Al Quwain City': {'admin1code': '07',
  'countrycode': 'AE',
  'geonameid': 290594,
  'latitude': 25.56473,
  'longitude': 55.55517,
  'name': 'Umm Al Quwain City',
  'population': 62747,
  'timezone': 'Asia/Dubai'}}

如果是这样,您可以从现有字典创建此格式的新字典。这是您可以做到的一种方法,dicc您现有的字典在哪里。

newdic = {}
for key, val in dicc.items():
    newdic[val['name']] = val

print(newdic)

推荐阅读