[Tutor] Matching dictionary entries by partial key

Kent Johnson kent37 at tds.net
Fri Oct 7 04:28:23 CEST 2005


William O'Higgins Witteman wrote:
> I'm trying to traverse a dictionary looking for partial matches of the
> key, and I'm not sure how.  Here's a sample dictionary:
> 
> dict = {00001234 : value1, 20051234 : value2, 20071234 : value3}
> 
> Here's what I'm trying to do:
> 
> for key in dict:
>     if key == 0000???? or key == 2005????:

  if key.startswith('0000') or key.startswith('2005'):

or with a regular expresion:
  if re.match('0000|2005', key):

>         do something with dict[key]
> 
> The challenge is that I only care about the first four digits of the key
> for the purpose of this match - is there a way to express this?  I could
> probably create a wrapper dictionary using just the first four digits of
> the key as they key, and containing the original key:value pair as a
> list within it, but that seems cumbersome.  Any one have a suggestion?

If you have a *lot* of keys and need more speed, that might be a good optimization. For a small dict, just use startswith().

Kent

> Thanks.
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor



More information about the Tutor mailing list