繁体   English   中英

在嵌套字典列表中搜索值

[英]search values in a list of nested dictionaries

我想对嵌套字典列表中的值执行搜索并返回另一个键:值对。 这些字典是元文件。 基本上我想搜索每个字典的 ID,找到所有具有相同 ID 的字典,并返回文件位置(键:值)对。

metafile = [{'metadata':{'Title':'The Sun Also Rises', 'ID': 'BAY121-F1164EAB499'}, 'content': 'xyz', 'File_Path': 'file_location1'},
{'metadata':{'Title':'Of Mice and Men', 'ID': '499B0BAB@dfg'}, 'content': 'abc', 'File_Path': 'file_location2'},
{'metadata':{'Title':'The Sun Also Rises Review', 'ID': 'BAY121-F1164EAB499'}, 'content': 'ftw', 'File_Path': 'file_location3'}]

我创建了一个循环来执行我的搜索,如下所示。 但是它返回一个空列表,我应该如何修改它以便返回文件路径?

search_ID = 'BAY121-F1164EAB499'
path =[]
for a in metafile:
    for val in a['metadata']['ID']:
        if search_ID == val:
            path.append(a['File_Path'])

你不需要一个内部循环:

正确的代码

search_ID = 'BAY121-F1164EAB499'
path =[]
for a in metafile:
    #a['metadata']['ID'] already gives you the value of ID
    if search_ID == a['metadata']['ID']:
        path.append(a['File_Path'])

output

['file_location1', 'file_location3']

您不需要遍历a['metadata']['ID'] ,而只需直接访问它们。 所以修改后的代码将是

    metafile = [{'metadata':{'Title':'The Sun Also Rises', 'ID': 'BAY121- 
    F1164EAB499'}, 'content': 'xyz', 'File_Path': 'file_location1'},
    {'metadata':{'Title':'Of Mice and Men', 'ID': '499B0BAB@dfg'}, 'content': 'abc', 
    'File_Path': 'file_location2'},
    {'metadata':{'Title':'The Sun Also Rises Review', 'ID': 'BAY121-F1164EAB499'}, 
    'content': 'ftw', 'File_Path': 'file_location3'}]

     search_ID = 'BAY121-F1164EAB499'
     path =[]
     for a in metafile:
         if a["metadata"]["ID"] == search_ID:
            path.append(a['File_Path'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM