在一个嵌套字典中查找一个值,以在一个单独的字典中获得一个值,但父字典相同



在从API请求返回的响应中。我得到的格式是一个嵌套字典列表。例如,

{
"data": [
{
"3": {
"value": 1
},
"6": {
"value": "Conversion"
},
"7": {
"value": "HVAC"
}
},

我可以很容易地通过使用r['data']的第一个字典。此时,每个列表项都是数据库中的一条记录。r['data'][0]给了我一个字段('3')的字典,然后是一个值({'value': 'Conversion'})的字典。

我希望能够查找像'转换'的值,并让它告诉我字段'3'的值是什么。不管怎样,用python来做这个?

你的描述与实际情况不太相符。让我们有一个完整的结构:

r = {
"data": [
{
"3": {
"value": 1
},
"6": {
"value": "Conversion"
},
"7": {
"value": "HVAC"
}
}
]
}

r是字典。它包含一个键('data'),其关联值是一个列表,在本例中,该列表包含一个字典。那本字典有三个键——"3"、"6"。,"7"。每个键都有一个值,这个值本身就是一个字典,由一个键('value')和一个关联的值组成。

可以这样断言:

assert r['data'][0]['6']['value'] == 'Conversion'

希望这展示了如何访问较低级别的值

从你的问题中不清楚的是,当你想要键'3'的值时,为什么你要搜索'Conversion',这将是:

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'))

这样做提供了指定相关键和值

的灵活性。

我必须做一个假设,你是试图说的是,你想要索引基于值。

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]'。我不知道你的数据是否应该这样格式化…'data'里面有一个列表,然后里面只有一个字典。但是,对于这种格式,它会给你索引。

最新更新