Best way to deal with different data types in a list comprehension

Rock Neurotiko miguelglafuente at
Wed Sep 24 00:05:52 CEST 2014

Maybe there are a different way, but you can do this:

' '.join([self.get_abbrev()] +
           [str(f['value').encode('utf-8') if type(f['value']) is str else
            for f in self.filters
            if f.has_key('value')]).strip()

2014-09-24 0:01 GMT+02:00 Larry Martell <larry.martell at>:

> I have some code that I inherited:
> ' '.join([self.get_abbrev()] +
>            [str(f['value')
>             for f in self.filters
>             if f.has_key('value')]).strip()
> This broke today when it encountered some non-ascii data.
> I changed the str(f['value']) line to f['value'].encode('utf-8'),
> which works fine, except when f['value'] is not a string (it could be
> anything).
> Without rewriting this without the list comprehension, how can I write
> this to deal with both strings and non-strings?
> --

Miguel García Lafuente - Rock Neurotiko

Do it, the devil is in the details.
The quieter you are, the more you are able to hear.
Happy Coding. Code with Passion, Decode with Patience.
If we make consistent effort, based on proper education, we can change the

El contenido de este e-mail es privado, no se permite la revelacion del
contenido de este e-mail a gente ajena a él.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Python-list mailing list