符合pep8的深入字典访问

时间:2013-04-24 23:41:27

标签: python pep8

什么是pep8兼容的深度字典访问方式?

dct = {
    'long_key_name_one': {
        'long_key_name_two': {
            'long_key_name_three': {
                'long_key_name_four': {
                    'long_key_name_five': 1
                }
            }
        }
    }
}

E501线太长(118> 80个字符)

print dct['long_key_name_one']['long_key_name_two']['long_key_name_three']['long_key_name_four']['long_key_name_five']

在'['

之前的E211空格
print dct['long_key_name_one']['long_key_name_two']\
    ['long_key_name_three']['long_key_name_four']['long_key_name_five']

E124右括号与视觉缩进不匹配

print dct['long_key_name_one']['long_key_name_two'
    ]['long_key_name_three']['long_key_name_four']['long_key_name_five']

这通过了pep8,但似乎不太理想

print dct['long_key_name_one']['long_key_name_two'][
    'long_key_name_three'
]['long_key_name_four']['long_key_name_five']

有没有办法打破这条线,使它看起来很好并且符合pep8?

2 个答案:

答案 0 :(得分:7)

也许不是最好的方式,但它有效:

a = dct['long_key_name_one']['long_key_name_two']
b = a['long_key_name_three']['long_key_name_four']['long_key_name_five']

但这也有效,这是建议的方法:

print (dct['long_key_name_one']['long_key_name_two']
       ['long_key_name_three']['long_key_name_four']
       ['long_key_name_five'])

答案 1 :(得分:4)

如果你在一个函数中使用它(并且你可以使用print()作为函数,因为2.7 afaik)

您可以在括号中使用隐式连接

print(dct['long_key_name_one']
         ['long_key_name_two']
         ['long_key_name_three']
         ['long_key_name_four']
         ['long_key_name_five'])