假设我有一个 Python 字典,如下所示:
sample_dict = {'Grade': {'Aya':4.0, 'John':3.0, 'Anna':1.0},
'Address': {'Aya':'California', 'John':'Canada', 'Anna':'Mexico'},
'School': 'Harvard University',
'Nationality':{'Aya':'Japanese', 'John':'American', 'Anna':'American'}
}
我很困惑如何操纵代码,我将传递参数以进行搜索例如Aya 它会导致类似下面的结果:
Grade: Aya: 4.0
Address: Aya:California
School: Harvard University
Nationality: Aya: Japanese
更好的是:
Aya
Grade: 4.0
Address: California
School: Harvard University
Nationality: Japanese
这是我的开始:
def get_info(name):
for key, value in sample_dict:
print(name)
if type(value) is dict:
for people, equivalent in value:
if(equivalent[name]):
print key, equivalent[name]
else:
print ("Not Found!")
else:
print key, value[key]
{'Grade': {'John': 3.0, 'Aya': 4.0, 'Anna': 1.0}, 'Nationality': {'John': 'American', 'Aya': 'Japanese', 'Anna': 'American'}, 'School': 'Harvard University', 'Address': {'John': 'Canada', 'Aya': 'California', 'Anna': 'Mexico'}}
ValueError Traceback(最近调用 最后)在() 19 打印键,值[键] 20 ---> 21 get_info('阿雅')
在 get_info(名称) 中 8个 9 def get_info(名称): ---> 键值 10,sample_dict 中的值: 11 打印(姓名) 12 如果类型(值)是字典:
ValueError:要解压的值太多
请您参考如下方法:
这里有很多潜在的陷阱,但是没有关于可以对数据做出什么假设的更多详细信息,您可以通过单行字典理解来满足这种特定情况:
{k:(v['Aya'] if 'Aya' in v else v) for k,v in sample_dict.items()}
