Case-insensitive string compare?

Maric Michaud maric at aristote.info
Fri Sep 5 00:59:16 CEST 2008


Le Friday 05 September 2008 00:47:00 Chris Rebert, vous avez écrit :
> On Thu, Sep 4, 2008 at 3:37 PM, Robert Dailey <rcdailey at gmail.com> wrote:
> > On Thu, Sep 4, 2008 at 5:21 PM, Fredrik Lundh <fredrik at pythonware.com>
> >
> > wrote:
> >> Robert Dailey wrote:
> >>> I currently have a dictionary object that I'm doing the following with:
> >>>
> >>> if lib not in stage_map:
> >>>    # ... do stuff ...
> >>>
> >>> However, this will perform a case-sensitive comparison between lib and
> >>> each key in stage_map. Is there a way to make this do a
> >>> case-insensitive comparison instead?
> >>
> >> dictionary lookups use the exact value.  to make a case-insensitive
> >> lookup, use key.lower() instead of key when creating the dictionary, and
> >> then do
> >>
> >>    if lib.lower() not in state_map:
> >>        ...
> >
> > So you're saying to ensure that stage_map's keys are initially lower-case
> > to begin with? Well, I can't do this either since the case of the keys is
> > actually valuable later on. It's only for the purposes of this specific
> > comparison operation that the case should be ignored.
>
> Then store the string in its original case in the value part of the
> key-value pair:
>
> stage_map[key.lower()] = (key,whatever)
>

"premature optimization is the root of all evil"

I don't recall the OP wanted a (a bit) faster solution to his problem in 
counterpart of memory loss and syntax complication.

If the OP's proposal seems already messy, how about ths one :
if lib.lower() not in ( e[0] for e in stage_map.items() ) :
    ...


> - Chris
>
> > --
> > http://mail.python.org/mailman/listinfo/python-list



-- 
_____________

Maric Michaud




More information about the Python-list mailing list