python递归面试题_python面试题
需求:輸入以下json串,返回字典,字典值僅包括json最底層數據
輸入:my_dict = {
"name":"alien",
"country":"china",
"other":{
"age":"18",
"gender":"man"
},
"school":"HLW"
}
輸出:{'country': 'china', 'school': 'HLW', 'age': '18', 'name': 'alien', 'gender': 'man'}
1、 背景知識
1)item(),遍歷字典
2)isinstance(),判斷對象的變量類型
2、思路
獲取json中key和value值,判斷如果value是不是字典類型,則循環遞歸獲取key和value值
3、獲取json最底層數據(一)
def read_json_only1(dict_str):
dict_result = {}
for k,v in dict_str.items():
if isinstance(v,dict): #判斷如果value是字典類型,則提取字典中的key和value
for k2,v2 in v.items():
dict_result[k2]=v2
else:
dict_result[k] = v
print dict_result
if __name__ == '__main__':
read_json_only1(my_dict)
輸入:
my_dict = {
"name":"alien",
"country":"china",
"other":{
"age":"18",
"gender":"man"
},
"school":"HLW"
}
輸出:{'country': 'china', 'school': 'HLW', 'age': '18', 'name': 'alien', 'gender': 'man'}
4、發現上面方法只能滿足只有一到兩層的情況,如果兩層下面的value 還是字典,就沒法獲取到,于是打個問號,能否用遞歸方法實現
如:輸入串為
my_dict = {
"name":"alien",
"country":"china",
"other":{
"age":"18",
"gender":"man",
"other":{
"address":"beijing",
"phone":"13800138000"
}
},
"school":"HLW"
}
輸出結果為:{'school': 'HLW', 'name': 'alien', 'country': 'china', 'age': '18', 'other': {'phone': '13800138000', 'address': 'beijing'}, 'gender': 'man'}
5、優化,使用遞歸獲取獲取json最底層數據(二)
dict_result = {}
def read_json_only(dict_str):
for k,v in dict_str.items():
if isinstance(v, dict):
read_json_only(v)
else:
dict_result[k] = v
return dict_result
if __name__ == '__main__':
print read_json_only(my_dict)
輸出:{'school': 'HLW', 'name': 'alien', 'country': 'china', 'age': '18', 'phone': '13800138000', 'gender': 'man', 'address': 'beijing'}
注意,for循環過程return只返回第一次滿足條件的結果,會出現其余的沒有返回的問題。
總結
以上是生活随笔為你收集整理的python递归面试题_python面试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual C++实现定制标题栏
- 下一篇: 操作 NT 服务