我有一個函數,它接受一個鍵並遍歷嵌套的字典,無論其深度如何,都會返回該值。但是,我只能得到打印的價值,而不是返回。我已閱讀關於此問題的其他問題,並已嘗試1.實現yield 2.將值附加到列表中,然後返回列表。遞歸函數打印但不返回
def get_item(data,item_key):
# data=dict, item_key=str
if isinstance(data,dict):
if item_key in data.keys():
print data[item_key]
return data[item_key]
else:
for key in data.keys():
# recursion
get_item(data[key],item_key)
item = get_item(data,'aws:RequestId')
print item
的樣本數據:
data = OrderedDict([(u'aws:UrlInfoResponse', OrderedDict([(u'@xmlns:aws', u'http://alexa.amazonaws.com/doc/2005-10-05/'), (u'aws:Response', OrderedDict([(u'@xmlns:aws', u'http://awis.amazonaws.com/doc/2005-07-11'), (u'aws:OperationRequest', OrderedDict([(u'aws:RequestId', u'4dbbf7ef-ae87-483b-5ff1-852c777be012')])), (u'aws:UrlInfoResult', OrderedDict([(u'aws:Alexa', OrderedDict([(u'aws:TrafficData', OrderedDict([(u'aws:DataUrl', OrderedDict([(u'@type', u'canonical'), ('#text', u'infowars.com/')])), (u'aws:Rank', u'1252')]))]))])), (u'aws:ResponseStatus', OrderedDict([(u'@xmlns:aws', u'http://alexa.amazonaws.com/doc/2005-10-05/'), (u'aws:StatusCode', u'Success')]))]))]))])
當我執行,所需的值可以打印,但不會返回:
>>>52c7e94b-dc76-2dd6-1216-f147d991d6c7
>>>None
這是怎麼回事?爲什麼函數沒有找到它並返回值呢?
你必須在'else'子句中返回''。 – AChampion
@AChampion我試過 - 仍然返回'無',甚至沒有打印出值 –
閱讀此:http://stackoverflow.com/questions/11356168/return-in-recursive-function – MYGz