簡體   English   中英

有沒有一種有效的方法從字典中檢索值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM