在具有多个值的python中切换字典中的键和值

问题描述 投票:0回答:2

给这样的字典(来自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'},....

非常感谢。

python dictionary
2个回答
0
投票

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

{'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)

0
投票

只需将值重新分配为键:

data = ...  # Your data here
for geocode, area in data.items():
    cityname = area["name"]
    area[cityname] = "name"
    del area["name"]  # if you don’t want the ‘name’ key anymore
    data[geocode] = area
© www.soinside.com 2019 - 2024. All rights reserved.