python使用引數對巢狀字典進行取值的方法

2022-10-04 17:33:20 字數 1578 閱讀 2847

因一些特殊需求需要以引數的形式獲取字典中特定的值,網上搜了一下並沒有特別好的實現(並沒有太認真去找~),所以自己實現了乙個,以供大家參考:) 。

話不多說,直接上**:

def dict_get(dic, locators, default=none):

''':param dic: 輸入需要在其中取值的原始字典

:param locators: 輸入取值定位器, 如:['result', 'msg', '-1', 'status']

:param default: 進行取值中報錯時所返回的預設值 (default: none)

:return: 返回根據引數locators找出的值

'''if not isinstance(dic, dict) or not isinstance(locators, list):

return程式設計客棧 default

value = none

for locator in locators:

if not type(value) in [dict, list] and isinstance(locator, str) and not can_convert_to_int(locator):

try:

value = dic[locator]

except keyerror:

return default

continue

if isinstance(value, dict):

try:

value = dict_get(value, [locator])

except keyerror:

return default

continue

if isinstance(value, list) and can_convert_to_int(locator):

try:

value = value[int(locator)]

except indexerror:

return default

continue

return value

def can_convert_to_int(input):

try:

int(input)

return true

except baseexcep程式設計客棧tion:

return false

best practice

好的lftbjxbt我們來進行一次簡單的最佳實踐:)

if __name__ == '__main__':

dict_test = , ]}}

result = dict_get(dict_test, ['result', 'msg', '-1', 'status'])

print(result)

下面是控制台的輸出,大家可以看到輸出是符合預期結果的:)

failed

process finished with exit code 0

這次分享到此為止~ 我們有lftbjxbt緣再見:)

本文標題: python使用引數對巢狀字典進行取值的方法

本文位址:

Python字典巢狀

1 import copy 2 menu 10 程式設計 11,17 伺服器程式設計 18,23 24 網頁設計 31 後端 32353637 38 3940 41 menu copy copy.deepcopy menu 424344 print menu copy.pop 電腦科學與技術 字典巢...

python 有序字典與巢狀字典

1.ordereddict 有序字典 ordereddict是dict的子類,它記住了內容新增的順序。而普通字典是無序的。普通字典 import collections d dict d a a d b b d c c for k,v in d.items print k,v a ac c b b有...

python 字典和巢狀字典排序

正常字典的排序我們都知道,像這樣 a b sorted a.items key lambda x x 1 就會輸出如下結果 101,0 100,1 102,2 那如果是巢狀字典呢,比如 a 101 102 實際上是類似的,我們只要理解了上面這個key的含義,lambda可以理解為乙個函式,輸出為x ...