在python中命名嵌套的字典

问题描述 投票:0回答:1

一个逻辑嵌套的结构,比如一个学生地址有一个平号,一个楼号(至少)。

现在,一个学生有一个名字,我们可以很容易地从单体地址中映射出来,使用,例如。这个 惯例。

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,我很想避免这种模板。这就是我为什么要问这个问题,到底是替代方案更可读还是python更可读?

floor_to_flat_to_students = ...

我对 ()前者是。

  1. +它以命名叶子节点开始,这可能是它的客户所要求的。
  2. +它是我上面提到的2个问题中,目前对非嵌套情况评价较高的答案。
  3. -感觉第一部分需要括号才能正确读出(students_by_flat)_by_floor。

而()后者。

  1. +它与用于索引的键的顺序相匹配。
  2. +在非嵌套的情况下,上面链接的,专门针对python的,它是最好的答案。
  3. -其他的优点。
python dictionary naming-conventions
1个回答
0
投票

在没有官方指南的情况下,我自己参考Guido的PEP 8,"愚蠢的一致性是小心灵的霍比特人"

对于非嵌套的字典,我更喜欢。student_by_addressజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ to 我觉得这更像是一个动词,因为它可能适合于一个函数标识符。

对于嵌套词典来说,它必须是: floor_to_flat_to_students.

会接受反对意见,但我认为这抓住了python的精神,对任何考虑这些问题的人。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.