Доступ к глубокому словарю с поддержкой 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?
Ответы
Ответ 1
Возможно, это не лучший способ, но он работает:
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'])
Ответ 2
Если вы используете его внутри функции (и вы можете использовать функцию 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'])