python - 向后遍历,如果在内部字典中找到搜索值匹配,则返回外部字典值

标签 python dictionary

我有一个字典列表,其中值包含另一个字典,我需要在内部字典中搜索字符串,如果其匹配需要返回外部字典第一个键的值。

列表如下:

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/

相关文章:

swift - 在 Swift 中构建字典扩展以作为值附加到数组

swift - 如何在 Swift 中编辑字典中的值

python - 如何填充 matplotlib 网格?

c# - 使用 LINQ 将 List<int> 转换为 Dictionary<int,int>

python - Theano : Pass iterating index of scan to the called function

python - 如何在开放式简历中与BGR图像像素值进行比较?

python - 当我需要一本自指字典时,我该怎么办?

c# - EqualityComparer <Type> GetHashCode和等于

python - 导入的 Python 模块中的命令行参数

python - 如何填充由线连接的两组数据之间的区域?