我有一个字典列表,其中值包含另一个字典,我需要在内部字典中搜索字符串,如果其匹配需要返回外部字典第一个键的值。
列表如下:
lst=[{'value': 'value1', 'Characteristic': {'ID': 'searchstr1'}},
{'value': 'value2', 'Characteristic': {'ID': 'searchstr2'}},
{'value': 'value3', 'Characteristic': {'ID': 'searchstr3'}}
, {'value': 'value4', 'Characteristic': {'ID': 'searchstr4'}}]
搜索字符串是
search_str="searchstr3"
所以在这种情况下它应该返回
value3 as result .
我尝试循环遍历列表,然后获取每个字典项目,但不确定如何在找到所需值后遍历回来。
这是我到目前为止所厌倦的代码:
def find_value():
for dicts in lst:
current = dicts["value"]
for k,v in dicts.items():
#print("{0} : {1}".format(k, v))
if isinstance(v, dict):
if v['ID']==search_str:
break
return current
最佳答案
在您的简单情况下,它与第一个键无关,而是与特定键'value'
有关 - 只需立即返回所需的值:
lst = [{'value': 'value1', 'Characteristic': {'ID': 'searchstr1'}},
{'value': 'value2', 'Characteristic': {'ID': 'searchstr2'}},
{'value': 'value3', 'Characteristic': {'ID': 'searchstr3'}},
{'value': 'value4', 'Characteristic': {'ID': 'searchstr4'}}]
search_str = "searchstr3"
def find_value(lst, search_str):
for d in lst:
for k,v in d.items():
if isinstance(v, dict) and v['ID'] == search_str:
return d['value']
return None
print(find_value(lst, search_str)) # value3
关于python - 向后遍历,如果在内部字典中找到搜索值匹配,则返回外部字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56946896/