16

什么是符合 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 标准?

4

2 回答 2

8

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

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'])
于 2013-04-24T23:52:44.380 回答
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'])
于 2013-04-25T08:47:02.983 回答