Логически вложенная структура, например, адрес студента имеет номер квартиры, номер этажа (по крайней мере).
Теперь у студента есть имя, которое мы можем легко сопоставить с монолитным адресом 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 ):
- + Он начинается с наименования листового узла, что, вероятно, является тем, что ему требуется его клиентами.
- + Это был намного более высокий рейтинг из двух вопросов, которые я упоминал выше для невложенных случаях.
- -Похоже, что первая часть нуждается в скобках, чтобы правильно читать (student_by_flat) _by_floor
И ( to ) последнее:
- + Он соответствует порядку ключей, используемых для его индексации.
- + В невыложенном случае, указанном выше и специально для python, это лучший ответ.
- -Сильные стороны другого.