[英]How to retrieve dicts from a list of dicts using wildcard key value
我有很多字典,每個字典都有一個key:value像往常一樣。 我想在下面的示例中抓住所有與名稱鍵的特定通配符值匹配的字典。
例如,如果下面的名稱鍵的值格式為A_B_C_D
(例如John_Michael_Joseph_Smith
),我將如何抓住所有字典來搜索格式為A*D
名稱值(例如John*Smith
?)或格式為A_B*
(例如John_Michael*
)等?
mylist=[{id:value,name:value,parent:value},
{id:value,name:value,parent:value},
{id:value,name:value,parent:value}...]
您的模式似乎使用UNIX文件名模式。 *
匹配任意數量的字符。 您可以使用fnmatch.fnmatch()
函數生成一個過濾器:
>>> from fnmatch import fnmatch
>>> fnmatch('John_Michael_Joseph_Smith', 'John*Smith')
True
>>> fnmatch('John_Michael_Joseph_Smith', 'John_Michael*')
True
您可以在列表推導中使用過濾器以生成匹配字典的新列表,並針對該模式測試每個dictionary['name']
值:
from fnmatch import fnmatch
def namesearch(pattern, dictionaries):
return [d for d in dictionaries if fnmatch(d['name'], pattern)]
此處namesearch
返回一個列表字典,其'name'
值與給定模式匹配:
matched = namesearch('John*Smith', mylist)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.