Именование вложенных словарей в python - PullRequest
0 голосов
/ 30 мая 2020

Логически вложенная структура, например, адрес студента имеет номер квартиры, номер этажа (по крайней мере).

Теперь у студента есть имя, которое мы можем легко сопоставить с монолитным адресом c, используя, например, это соглашение:

address_to_student

или эквивалентно :

student_by_address

student_by_address = {
    "flat 5 floor 4": "sam",
    "flat 2 floor 4": "max",
    "flat 9 floor 1": "tim",
}

Для эффективности (скажем, если «jen» переходит в «max»), я мог бы также захотеть сохранить адреса в виде словаря, индексированного по этажам.

На основе огромного энтузиазма по поводу _by_ формат во втором связанном ответе, я пошел с этим, но для вложенных словарей я нахожу его неинтуитивным.

students_by_flat_by_floor = {
    {
        "floor 4": {
            "flat 5": ["sam"],
            "flat 2": ["max", "jen"]
        },
        "floor 1": {
            "flat 9": ["tim"]
        },
    }
}

Кто-нибудь еще считает это нечитаемым? Это был бы класс, если бы не python. Быть python Я стремлюсь избегать этого котла. Вот почему я задаю вопрос, является ли альтернатива более читаемой или pythoni c?

floor_to_flat_to_students = ...

Мои опасения по поводу первого ( by ):

  1. + Он начинается с наименования листового узла, что, вероятно, является тем, что ему требуется его клиентами.
  2. + Это был намного более высокий рейтинг из двух вопросов, которые я упоминал выше для невложенных случаях.
  3. -Похоже, что первая часть нуждается в скобках, чтобы правильно читать (student_by_flat) _by_floor

И ( to ) последнее:

  1. + Он соответствует порядку ключей, используемых для его индексации.
  2. + В невыложенном случае, указанном выше и специально для python, это лучший ответ.
  3. -Сильные стороны другого.

1 Ответ

0 голосов
/ 31 мая 2020

В связи с отсутствием официальных руководств я обращаюсь к PEP 8 Гвидо, «Глупец sh Последовательность - это хобгоблин маленьких умов»

Для невложенных словарей я предпочитаю student_by_address, to, на мой взгляд, больше напоминает глагол, который может соответствовать идентификатору функции.

Для вложенных словарей это должно быть, floor_to_flat_to_students.

Было бы восприимчиво к аргументам против , но я думаю, что это отражает дух python для всех, кто задумывается об этих проблемах.

...