python - How to retrieve dicts from a list of dicts using wildcard key value -


i have large list of dictionaries, each dict has key:value normal. want grab dicts match particular wildcard key value name key in example below.

for example, if values of name keys below in format a_b_c_d (e.g. john_michael_joseph_smith), how grab dicts searching name values of format a*d (e.g. john*smith?) or format a_b* (e.g. john_michael*) etc?

mylist=[{id:value,name:value,parent:value},         {id:value,name:value,parent:value},         {id:value,name:value,parent:value}...] 

your patterns appear use unix filename patterns; * matching number of characters. can use fnmatch.fnmatch() function produce filter:

>>> fnmatch import fnmatch >>> fnmatch('john_michael_joseph_smith', 'john*smith') true >>> fnmatch('john_michael_joseph_smith', 'john_michael*') true 

you use filter in list comprehension produce new list of matching dictionaries, testing each dictionary['name'] value against pattern:

from fnmatch import fnmatch  def namesearch(pattern, dictionaries):     return [d d in dictionaries if fnmatch(d['name'], pattern)] 

here namesearch returns list dictionaries 'name' value matches given pattern:

matched = namesearch('john*smith', mylist) 

Comments

Popular posts from this blog

css - SVG using textPath a symbol not rendering in Firefox -

Java 8 + Maven Javadoc plugin: Error fetching URL -

node.js - How to abort query on demand using Neo4j drivers -