Какими были бы предостережения и ловушки при доступе к ключам диктовки таким образом?
Как предполагает @Henry, одна из причин, по которым точка-доступ не может использоваться в dicts, заключается в том, что он ограничивает имена ключей dict допустимыми переменными python, тем самым ограничивая все возможные имена.
Ниже приведены примеры того, почему пунктирный доступ не будет полезен в общем случае, если даётся, d
:
Действительность
Следующие атрибуты будут недействительными в Python:
d.1_foo # enumerated names
d./bar # path names
d.21.7, d.12:30 # decimals, time
d."" # empty strings
d.john doe, d.denny's # spaces, misc punctuation
d.3 * x # expressions
Style
Соглашения PEP8 наложат мягкое ограничение на присвоение имен атрибутам:
A. Зарезервированные ключевые слова (или встроенная функция) имена:
d.in
d.False, d.True
d.max, d.min
d.sum
d.id
Если имя аргумента функции конфликтует с зарезервированным ключевым словом, обычно лучше добавить одно завершающее подчеркивание ...
B. Правило регистра для методов и имен переменных :
Имена переменных соответствуют тому же соглашению, что и имена функций.
d.Firstname
d.Country
При необходимости используйте правила именования функций: строчные буквы со словами, разделенными подчеркиванием, для улучшения читаемости.
Иногда эти проблемы поднимаются в библиотеках, таких как pandas , которые разрешают точечный доступ к столбцам DataFrame по имени. Механизмом по умолчанию для разрешения ограничений именования является также обозначение массива - строка в скобках.
Если эти ограничения не применяются к вашему варианту использования, есть несколько вариантов структур данных с точечным доступом .