示例:
dict = {
'Domains':{
'Web':['JavaScript','PHP','Python'],
'Mobile':{'Android':'Java','iOS':['Swift','Objective-C'],'Windows Phone':'C#'},
'Desktop':['C#','Java','Python']}
}
我想在这本词典中找到'iOS'列表。有一种方法可以调用一个函数,如果该元素存在,它将显示元素的值。 示例:
print(function('iOS'))
['Swift','Objective-C']
答案 0 :(得分:1)
首先,找到所有dicts的辅助函数:
def all_dicts(a_dict):
yield a_dict
for key in a_dict:
if isinstance(a_dict[key], dict):
yield from all_dicts(a_dict[key])
现在,查找功能:
def lookup(a_dict, key):
for d in all_dicts(a_dict):
if key in d:
return d[key]
要看到它的实际效果:
>>> d = {'Domains': {'Web': ['JavaScript', 'PHP', 'Python'], 'Desktop': ['C#', 'Java', 'Python'], 'Mobile': {'Android': 'Java', 'Windows Phone': 'C#', 'iOS': ['Swift', 'Objective-C']}}}
>>> lookup(d, 'iOS')
['Swift', 'Objective-C']
如果列表中也存在字典,您可以调整all_dicts
以递归方式进入。