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

関数内で使用する場合(および2.7 afaik以降、関数としてprint()を使用できます)

括弧内で暗黙的な連結を使用できます

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 に答える