What is the pep8 compliant way to do deep dictionary access?
dct = {
    'long_key_name_one': {
        'long_key_name_two': {
            'long_key_name_three': {
                'long_key_name_four': {
                    'long_key_name_five': 1
                }
            }
        }
    }
}
E501 line too long (118 > 80 characters)
print dct['long_key_name_one']['long_key_name_two']['long_key_name_three']['long_key_name_four']['long_key_name_five']
E211 whitespace before '['
print dct['long_key_name_one']['long_key_name_two']\
    ['long_key_name_three']['long_key_name_four']['long_key_name_five']
E124 closing bracket does not match visual indentation
print dct['long_key_name_one']['long_key_name_two'
    ]['long_key_name_three']['long_key_name_four']['long_key_name_five']
This passes pep8 but seems less than ideal
print dct['long_key_name_one']['long_key_name_two'][
    'long_key_name_three'
]['long_key_name_four']['long_key_name_five']
Is there a way to break up the line so that it looks nice and is pep8 compliant?
Perhaps not the best way, but it works:
a = dct['long_key_name_one']['long_key_name_two']
b = a['long_key_name_three']['long_key_name_four']['long_key_name_five']
But this also works, which is the suggested method:
print (dct['long_key_name_one']['long_key_name_two']
       ['long_key_name_three']['long_key_name_four']
       ['long_key_name_five'])
If you use it inside a function (and you could use print() as a function since 2.7 afaik)
You could just use implicit concatenation within a parentheses
print(dct['long_key_name_one']
         ['long_key_name_two']
         ['long_key_name_three']
         ['long_key_name_four']
         ['long_key_name_five'])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With