什么是PEP8标准的系统性多维(嵌套)数组?

2024-04-24 19:55:47 发布

您现在位置:Python中文网/ 问答频道 /正文

系统多维(嵌套)数组的PEP8标准是什么?在

在Python中有很多方法来构造数据,下面给出了一些示例。显然,“最佳”方法是满足您需求的方法,尽管我们都看到了我们共享的“草率”数据结构。但是,是否有一种系统化的方法来实际构建作为标准的数据?在

例如,由不明确的[list]/(tuple)填充的字典:

# print John's grade
students = {'John':['1','7'],'Kate':['PreK','4']}
print(students['John'][0])

或者是用一本字典填充的稍微不那么含糊的字典:

^{pr2}$

另一种可能的方法是使用类创建自己的数据类型和结构:

class timeZone:
    def __init__(self, zone_code, city, offset):
        self.zone_code = zone_code
        self.city = city
        self.offset = offset
        self.DST_offset = DST_offset

Z = timeZone('Z','Zulu Time',int(0))
Y = timeZone('Y','Fiji',int(-12))
X = timeZone('X','American Samoa',int(-11))
W = timeZone('W','Honolulu, HI',int(-10))
V = timeZone('V','Juneau, AK',int(-9))

或者有其他方法/库是最好的吗?在


Tags: 数据方法selfzonecity标准字典code
2条回答

这不是关于Python或最佳实践,而是你真正需要的。在

如果您需要更明确的,第二种解决方案更好。但是,如果您需要将所有值作为一个整体传递给像

def foo(grade, age, sex, height, ...):

你可能更喜欢第一个,因为你可以做foo(*students['John'])这样可以节省你的时间。在

一般来说,Python推荐清晰显式编码。在第一个示例中,列表中的值的含义确实不明确,因此我一般不建议这样做。在

现在,您有时可能想编写这样的代码,因为其他一些更重要的原因。我想说:总是尽可能明确,这样数据的含义就很容易被看到。在

现在,可以通过多种方式明确表示数据的含义:

  • 通过一个包含类和年龄的高效的collections.namedtuple(这比在字典中存储相同的内容更有效,而且由于类似.age的属性访问,它可以更高效)。在
  • 通过pandas数据框将每个学生与班级和年龄列关联起来。在
  • 通过NumPy记录数组:将学生的姓名、班级和年龄作为记录存储在一维数组中(但是给定一个名字,您必须遍历整个数组才能找到它,因此此方法可能不适合您的特定应用程序)。在

相关问题 更多 >