我正在处理一个嵌套字典,我正在尝试弄清楚如何有效地修改某些嵌套和非嵌套的键/值。简而言之,我正在尝试执行以下操作:
- 获取嵌套值并使用非嵌套键切换它
- 重命名嵌套键。
这是我正在使用的字典的一个基本示例:
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
