[英]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.