Skip to main content
 首页 » 编程设计

python之修改python中嵌套字典中的键和值

2025年05月04日8zhujiabin

我正在处理一个嵌套字典,我正在尝试弄清楚如何有效地修改某些嵌套和非嵌套的键/值。简而言之,我正在尝试执行以下操作:

  1. 获取嵌套值并使用非嵌套键切换它
  2. 重命名嵌套键。

这是我正在使用的字典的一个基本示例:

pet_dictionary = {'Buford':{'color':'white', 'weight': 95, 'age':'3',  
                  'breed':'bulldog'},  
                  'Henley':{'color':'blue', 'weight': 70, 'age':'2',  
                  'breed':'bulldog'},  
                  'Emi':{'color':'lilac', 'weight': 65, 'age':'1',  
                  'breed':'bulldog'},  
                  } 

我想使用非嵌套键,即每只狗的名字(即 Buford、Henley、Emi),将其切换为年龄的嵌套值(即 3、2、1),然后更改嵌套从“年龄”到“姓名”的键名。所以输出应该是这样的:

pet_dictionary = {'3':{'color':'white', 'weight': 95, 'name':'Buford',  
                  'breed':'bulldog'},  
                  '2':{'color':'blue', 'weight': 70, 'name':'Henley',  
                  'breed':'bulldog'},  
                  '1':{'color':'lilac', 'weight': 65, 'name':'Emi',  
                  'breed':'bulldog'},  
                  } 

我了解如何逐一手动执行此操作,但我不确定以更优雅/最佳的方式进行所有这些更改的最佳方法是什么。

请您参考如下方法:

在迭代字典时,您可以通过三个步骤干净地构建一个新字典:

# Preserves original dict 
d = {} 
for k, v in pet_dictionary.items():                      
    key = v["age"]                                                 # 1. grab the new key 
    d[key] = {"name": k}                                           # 2. add new "name" item 
    d[key].update({k_:v_ for k_, v_ in v.items() if k_!="age"})    # 3. update the new dict 
 
d