[英]Most efficient way to retrieve data from two lists nested as values of dictionary in python
[英]Is there an efficient way to retrieve values from dictionary
我有一個值字典。 這是一個公司名稱。
它有3個鍵:
{'html_attributions': [], 'result' : {'Address': '123 Street', 'website' :'123street.com' 'status': 'Ok' }
我有一個包含許多詞典的數據框。 我想遍歷每一行的字典並獲得我想要的必要信息。
目前我正在編寫 for 循環來檢索這些信息。 有沒有更有效的方法來檢索這些信息?
addresses = []
for i in range(len(testing)):
try:
addresses.append(testing['Results_dict'][i]['result']['Address'])
except:
addresses.append('No info')
我所擁有的一切都很好。 但是,我想要更有效的東西。 也許使用 get() 方法? 但我不知道如何調用以獲取“結果”的內部信息。
如果數據很大,這是一種更快的解決方案:
addresses = list(map(lambda x: x.get('result').get('Address', 'No info'), testing['Results_dict']))
嘗試這個:
def get_address(r):
try:
return r['result']['Address']
except Exception:
return 'No info'
addresses = df['Results_dict'].map(get_address)
這可以防止Result_dict
為 None、不是 dict 或路徑上的任何鍵不存在的情況。
這是我處理嵌套字典鍵的方法:
例子:
def keys_exists(element, *keys):
if not isinstance(element, dict):
raise AttributeError('keys_exists() expects dict as first argument.')
if len(keys) == 0:
raise AttributeError('keys_exists() expects at least two arguments,
one given.')
_element = element
for key in keys:
try:
_element = _element[key]
except KeyError:
return False
return True
對於數據:
{'html_attributions': [],
'result' : {'Address': '123 Street', 'website' :'123street.com'
'status': 'Ok' }
如果你想檢查結果是否存在或不使用上面的函數
`print 'result (exists/Not): {}'.format(keys_exists(data,"result"))`
檢查地址存在於結果中 試試這個
`print 'result > Address (exists/not): {}'.format(keys_exists(data, "result", "Address"))`
它將以 True/False 返回輸出
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.