我有一段代码可以抓取大学时间表网页并生成列表(列表)列表,如下所示:
[[[[start_time, end_time], [module_code, period_type, {period_number}], [room_code]], {next modules...}],{next_days...}]
如果我想用 Python(可能还有 Java 或其他语言)记录这种返回的数据,这样做会有最佳实践吗?
注意:我查看了 PEP,但找不到与此相关的任何内容
您创建简单的类来保存数据,而不是使用嵌套列表:
class TimeTableEntry(object):
def __init__(self, start, end, module, room):
self.start = start
self.end = end
self.module = module
self.room = room
然后记录您的方法返回的列表。额外的好处是现在您可以在这些对象上添加其他方法。添加一种__str__
易于显示的方法。等等。
最重要的是,您可以比记录原始类型的嵌套结构更清楚地记录这些条目对象。
这种结构更好地建模为字典;关键是房间代码。每个房间代码键都有一个列表,这个列表有代表每个课程/事件的元组。
schedule = dict()
schedule['room_1'] = [(start_time,end_time,module_code,period_type,..),
(start_time,end_time,module_code,period.....),
...
]
schedule['room_2'] = [ ... ] # as above
这使记录变得更容易,并且还使您能够执行以下操作:
for i in schedule:
print '{0} events scheduled for room {1}".format(len(schedule[i]),i)
以下是您可能如何记录它:
def foo(bar):
'''
Does some magic with `bar`. Cats may be harmed and
the space time continuum may be disturbed if you pass in
silly things like None.
Args:
bar: The best name for a variable since foo.
Returns:
A dict mapping keys to the room and rows representing
the room's schedule. A row is represented as a list.
Each element of the list is a tuple of strings representing
and event. For example:
{'room_1': [(start_time,end_time,module_code,period_type,..)]}
'''