在從 API 請求回傳的回應中。我得到一個嵌套字典串列的格式。例如。
{
"data": [
{
"3": {
"value": 1
},
"6": {
"value": "Conversion"
},
"7": {
"value": "HVAC"
}
},
我可以使用 r['data'] 輕松通過第一個字典。此時,每個串列項都是資料庫中的一條記錄。r['data'][0] 給了我一個欄位('3')是什么的字典,然后是一個值是什么的字典({'value':'Conversion'})。
我希望能夠查找像“轉換”這樣的值,并讓它告訴我欄位“3”的值是什么。無論如何要使用python做到這一點?
uj5u.com熱心網友回復:
你的描述與現實不太相符。讓我們有一個完整的結構:
r = {
"data": [
{
"3": {
"value": 1
},
"6": {
"value": "Conversion"
},
"7": {
"value": "HVAC"
}
}
]
}
r是字典。它包含一個鍵(“資料”),其關聯值是一個串列,在此示例中,該串列包含一個字典。該字典有 3 個鍵 - “3”、“6”和“7”。這些鍵中的每一個都有一個值,它本身就是一個由單個鍵(“值”)組成的字典,并且顯然還有一個關聯的值。
您可以斷言如下:
assert r['data'][0]['6']['value'] == 'Conversion'
希望這顯示了您如何訪問較低級別的值
您的問題不清楚的是,當您想要鍵“3”的值時,為什么要搜索“轉換”,這將是:
r['data'][0]['3']['value']
編輯:
def get_value(r, from_key, ref_key, value):
for d in r['data']:
if d.get(from_key, {}).get('value') == value:
return d.get(ref_key, {}).get('value')
print(get_value(r, '6', '3', 'Conversion'))
這樣做提供了指定相關鍵和值的靈活性
uj5u.com熱心網友回復:
我必須假設您要說的是您想要基于值的索引。
r = {...} # your data
def lookup(val, r_data):
for i in range(len(r_data['data'])): #loops through list based on index
for k, v in r_data['data'][i].items(): #loops dict with key/value
if v['value'] == val: #checks if value matches needle
return "[{}][{}]".format(i, k)
這將回傳“[0][6]”。我不知道您的資料是否應該以這種方式格式化……“資料”中的串列,然后只有一個字典。但是,給定這種格式,這將為您提供索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/492324.html
上一篇:`dict.pop`忽略`collections.defaultdict(default_factory)`設定的默認值
