給出一個字典串列,例如:
list_ = [
{ 'name' : 'date',
'value': '2021-01-01'
},
{ 'name' : 'length',
'value': '500'
},
{ 'name' : 'server',
'value': 'g.com'
},
如何訪問鍵名 == 長度的值?
如果可能,我想避免迭代,并且能夠檢查名為“length”的鍵是否存在,如果存在,則獲取其值。
uj5u.com熱心網友回復:
通過迭代和使用next,您可以執行以下操作:
list_ = [
{'name': 'date',
'value': '2021-01-01'
},
{'name': 'length',
'value': '500'
},
{'name': 'server',
'value': 'g.com'
}
]
res = next(dic["value"] for dic in list_ if dic.get("name", "") == "length")
print(res)
輸出
500
作為替代方案,如果"names"是唯一的,您可以構建一個字典以避免進一步迭代list_,如下所示:
lookup = {d["name"] : d["value"] for d in list_}
res = lookup["length"]
print(res)
輸出
500
請注意,如果您需要第二個鍵,例如"server",則不需要迭代,只需執行以下操作:
lookup["server"] # g.com
uj5u.com熱心網友回復:
如果不遍歷串列,肯定很難在串列中找到一個元素。這就是我將展示的第一個解決方案:
list(filter(lambda element: element['name'] == 'length', list_))[0]['value']
這將僅過濾您的串列中名稱為“length”的元素,從該串列中選擇第一個,然后選擇該元素的“值”。
現在,如果你有一個更好的資料結構,你就不必迭代了。不幸的是,為了創建更好的資料結構,我們將不得不迭代串列。具有“名稱”和“值”的字典串列實際上可能只是一個單獨的字典,其中“名稱”是key,“值”是value. 要創建該字典:
dict_ = {item['name']:item['value'] for item in list_}
然后你可以選擇 'length'
dict_['length']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/334490.html
上一篇:從輸入中獲取字典
