Skip to content Skip to sidebar Skip to footer

Reading From Python Dict If Key Might Not Be Present

I am very new to Python and parsing data. I can pull an external JSON feed into a Python dictionary and iterate over the dictionary. for r in results: print r['key_name'] A

Solution 1:

The preferred way, when applicable:

for r in results:
     print r.get('key_name')

this will simply print None if key_name is not a key in the dictionary. You can also have a different default value, just pass it as the second argument:

for r in results:
     print r.get('key_name', 'Missing: key_name')

If you want to do something different than using a default value (say, skip the printing completely when the key is absent), then you need a bit more structure, i.e., either:

for r in results:
    if'key_name'in r:
        print r['key_name']

or

for r in results:
    try: print r['key_name']
    except KeyError: pass

the second one can be faster (if it's reasonably rare than a key is missing), but the first one appears to be more natural for many people.

Solution 2:

There are two straightforward ways of reading from Python dict if key might not be present. for example:

dicty = {'A': 'hello', 'B': 'world'}

  1. The pythonic way to access a key-value pair is:

value = dicty.get('C', 'default value')

  1. The non-pythonic way:

value = dicty['C'] if dicty['C'] else 'default value'

  1. even worse:

try: value = dicty['C'] except KeyError as ke: value = 'default value'

Solution 3:

If possible, use the simplejson library for managing JSON data.

Solution 4:

the initial question in this thread is why I wrote the Dictor library, it handles JSON fallback and None values gracefully without needing try/except or If blocks.

Also gives you additional options like ignore upper/lower case,

see,

https://github.com/perfecto25/dictor

Solution 5:

use has_key() , and that will return true or false

Post a Comment for "Reading From Python Dict If Key Might Not Be Present"