![](/img/trans.png)
[英]In Python, how to sort a dict inside a dict by a key within the inner dict
[英]How to find specific item in a Python dict within another dict?
假設我有一個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':'哈佛大學','Address':{'John':'Canada','Aya':'California','Anna':'Mexico'}}
()最近一次調用ValueError Valueback(最近一次調用)19打印鍵,value [key] 20 ---> 21 get_info('Aya')
在get_info(name)中8 9 def get_info(name):---> 10作為key,sample_dict中的值:11 print(name)12如果type(value)是dict:
ValueError:太多值無法解包
這里有很多潛在的陷阱,但是由於缺少關於數據的假設的更多細節,您可以通過單行dict理解來滿足這種特定情況:
{k:(v['Aya'] if 'Aya' in v else v) for k,v in sample_dict.items()}
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'}
}
def get_info(name):
_info = {}
for key, val in sample_dict.items():
try:
if isinstance(val, dict):
val = val[name]
_info[key] = val
except KeyError:
return None
return _info
它應該像使用這樣的函數一樣簡單:
def get_info(name):
print(name, '\n'
'Grade:', sample_dict['Grade'][name], '\n'
'Address:', sample_dict['Address'][name], '\n'
'School:', sample_dict['School'], '\n'
'Nationality:', sample_dict['Nationality'][name])
然后在函數中使用您的任何名稱都可以像您想要的那樣工作:
get_info('Aya')
Aya
Grade: 4.0
Address: California
School: Harvard University
Nationality: Japanese
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.