簡體   English   中英

如何使用通配符鍵值從字典列表中檢索字典

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM