2017-05-27 58 views
0

我有以下问题我正在解决这需要我存储大量的参数,我会为一般的目的认为它是一个日历应用程序。我正在解决PYTHON这个问题,因为它是我唯一有限的能力。我正在学习这门语言,到目前为止,我还不是专家或熟练的用户。寻找最佳的数据存储类型PYTHON

我有一堂课是我日历的中流砥柱。

class DayOfLife(object): 

def __init__(self, date, index, stary, mlady, muze_slouzit_mladeho = [], muze_slouzit_stareho = []): 

     self.date = date 
     self.index = index 
     self.muze_slouzit_mladeho = muze_slouzit_mladeho 
     self.muze_slouzit_stareho = muze_slouzit_stareho 
     self.stary = stary 
     self.mlady = mlady 

muze_slouzit_mladeho_stareho是谁,可用于工作成为可能的人的名单。

索引是描述每天“烦人”的参数。周一更好然后周六,周日等

施塔mlady是当天选定的人一个明确的选择。 (那些我期望我的程序生成)

我创建了一个列表天(DayOfLife对象),并以“2017-01-01”格式分配每个日期。

我然后填充天的名单有我需要的只是施塔和mlady的所有值(那些我希望我的程序生成)

在现在,问题。 我不知道如果我的做法是“好”的,如果我要像执行的东西:

1:排序每天通过提供人的总金额列表(数muze_slouzit_mladeho,因为我很想先填充那些最难的日子,同时我需要轻松快速地访问那些日子前后的那一天。

所以,按照键的数量排序列表那些列表属性(muze_slouzit_mladeho),然后从可能性e键,并且在和之后在之前在之前以某种方式删除或标记为相同的键,因为关键字不能在接下来的两天中。 (人员不能连续两天参加)。此刻,我觉得如果我排序列表,我将不得不遍历整个列表以找到前一天的日期并更新其关键值。感觉最好能够写出像

day[i-1] remove key 
day[i+1] remove key 

我不确定我会怎么做。我目前不知道如何使用数据库。我认为我的数据类型将不得不演变成其他的东西,我可能需要添加另一个列表来保留由于“连续两天规则”而被删除的数十个人,而不是将其删除。

我想我会想到的东西,但我希望它是非常低效的。所以我想听听一些关于如何解决这个问题的意见。我必须学习SQLite吗?它会有帮助吗?我可以以某种方式使DayOfLife对象的数组可索引?或者我可以通过它们的属性访问这些对象吗?我不确定这是否可行。我可能真的很笨。

回答

0

DayOfLife objectamount of available people,e.g

my_dict = {'Date':2017-01-01, 'DayOfLife':<DayOfLife object>, 'amount':10} 

排序my_diict使用key = my_dict['amount']list object与创建日期为键和值dict

访问前一天/后:

E.g. current object Date = 2017-01-01 
Day before = 2017-01-01 - 1 = 2016-12-31; my_dict[ 2016-12-31] 
Day after= 2017-01-01 + 1 = 2017-01-02; my_dict[ 2017-01-02] 

你肯定是要永久保存您的数据,所以你必须决定如何? 现在开始使用csv module