我想对嵌套字典列表中的值进行搜索,然后返回另一个键:值对。这些词典是图元文件。基本上,我想搜索每个字典的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'])
答案 0 :(得分:1)
您不需要为此的内部循环:
正确的代码
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'])
输出
['file_location1', 'file_location3']
答案 1 :(得分:0)
您不需要遍历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'])