系统多维(嵌套)数组的PEP8标准是什么?
有许多方法可以在Python中构建数据,下面给出了一些示例。显然,最好的'方法是满足您需求的方法,即使我们已经看到了我们在“草率”中的份额。数据结构。但是,是否有一种系统的方法来实际构建作为标准建立的数据?
例如,由不明确的[list] /(元组)填充的字典:
# print John's grade
students = {'John':['1','7'],'Kate':['PreK','4']}
print(students['John'][0])
或者由字典填充的稍微不那么含糊的字典:
# print Kate's grade
students = {'John':{'grade':'1','age':'7'},'Kate':{'grade':'PreK','age':'4'}}
print(students['Kate']['grade'])
另一种可能的方法是使用类创建自己的数据类型和结构:
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))
或者还有其他最好的方法/库吗?
答案 0 :(得分:1)
一般来说,Python建议清晰度和显式编码。在你的第一个例子中,列表中值的含义确实不明确,所以我不推荐它。
现在,由于其他一些更重要的原因,您有时可能希望编写此类代码。我会说:始终尽可能明确,以便轻松看到数据的含义。
现在,可以通过多种方式明确指出数据的含义:
collections.namedtuple
(这样可以更有效地将相同的内容存储在字典中,并且由于像.age
这样的属性访问,它可以更高效。 答案 1 :(得分:-1)
这不是关于pythonic或最佳实践,而是你真正需要的。
如果您需要更明确,第二种解决方案更好。但是,如果您需要将所有值作为一个整体传递给类似
的函数str.format()
您可能更喜欢第一个,因为您可以def foo(grade, age, sex, height, ...):
来节省您的时间。