问题陈述是编写一个函数,该函数将接受输入字典对象并返回所有值的列表,即使在输入字典对象内部嵌套多级字典的情况下也是如此。
下面是这样一个嵌套字典的例子:
{
"f_name": "AKASH",
"s_name": "NASH",
"professional": {
"designation": "DE",
"company": "XYZ",
"place_of_work": {
"city": "BLR",
"state": "KA",
"country": "IN"
}
},
"personal_address": {
"city": "EKM",
"state": "KL",
"country": "IN"
}
}
我确实写了下面的代码,我能够提取字典值,即使是一个嵌套的字典,通过手动条件if语句。
def dic_values(x):
l =[]
l1 = []
if type(x) == dict:
for i in x:
if type(x[i]) != dict:
l.append(x[i])
elif type(x[i])== dict:
y = x[i]
for j in y:
l1.append(y[j])
else:
"Please input a dict object"
l.extend(l1)
return l
案例1:
在运行函数时,dict对象内部有一个嵌套字典:
dic_values({"name":"AKASH","s_name":"NASH", "place":{"city":"BLR","state":"KA","country":"IN"}})
预期输出:
['AKASH', 'NASH', 'BLR', 'KA', 'IN']
案例二:
像下面的例子一样,在内部有一个多级嵌套字典的输入:
dic_values({"f_name":"AKASH","s_name":"NASH","professional":{"designation":"DE","company":"XYZ","place_of_work":{"city":"BLR","state":"KA","country":"IN"}}, "personal_address":{"city":"EKM","state":"KL","country":"IN"}})
输出:
['AKASH','NASH','DE','XYZ', {'city': 'BLR', 'state': 'KA', 'country': 'IN'}, 'EKM', 'KL', 'IN']
预期输出:
['AKASH','NASH','DE','XYZ', 'BLR', 'KA', 'IN', 'EKM', 'KL', 'IN']
问题:
假设在输入字典对象中存在嵌套字典。我想写一段代码,其中代码动态检查多级嵌套字典的存在并执行。如CASE 2预期输出。
3条答案
按热度按时间pu82cl6c1#
修改现有代码以递归调用dic_values:
fafcakar2#
如果你有兴趣以非递归的方式来做这件事。你可以在你去的时候维护一个字典堆栈。只要堆栈中有字典,就有更多的值可以找到:
xuo3flqw3#