0

我有一段代码可以抓取大学时间表网页并生成列表(列表)列表,如下所示:

[[[[start_time, end_time], [module_code, period_type, {period_number}], [room_code]], {next modules...}],{next_days...}]

如果我想用 Python(可能还有 Java 或其他语言)记录这种返回的数据,这样做会有最佳实践吗?

注意:我查看了 PEP,但找不到与此相关的任何内容

4

2 回答 2

4

您创建简单的类来保存数据,而不是使用嵌套列表:

 class TimeTableEntry(object):
     def __init__(self, start, end, module, room):
         self.start = start
         self.end = end
         self.module = module
         self.room = room

然后记录您的方法返回的列表。额外的好处是现在您可以在这些对象上添加其他方法。添加一种__str__易于显示的方法。等等。

最重要的是,您可以比记录原始类型的嵌套结构更清楚地记录这些条目对象。

于 2012-09-25T10:25:59.590 回答
2

这种结构更好地建模为字典;关键是房间代码。每个房间代码键都有一个列表,这个列表有代表每个课程/事件的元组。

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,..)]}
    '''
于 2012-09-25T10:27:46.993 回答