在python中使用多个值切换字典中的键和值

2024-05-29 03:01:24 发布

您现在位置: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'},....

Tags: namecitylacountrycodealpopulationtimezonelatitude
2条回答

您正在寻找这样的输出吗

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

只需将值重新指定为键:

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

相关问题 更多 >

    热门问题