【发布时间】:2016-04-15 04:33:32
【问题描述】:
我正在编写一个需要大量日期查找(财政年度、月份、周)的程序。为了简化查找,我创建了一个字典,其中键是日期(用于查找),值是类对象。我将类 def 和用于读取日期数据(.txt 文件)的代码放在单独的文件中,而不是主文件中。顺便说一句,这不是关于 Date 对象的问题。 代码是:
# filename: MYDATES
class cMyDates:
def __init__(self, myList):
self.Week_Start = myList[1]
self.Week_End = myList[2]
self.Week_Num = myList[3]
self.Month_Num = myList[4]
self.Month = myList[5]
self.Year = myList[6]
self.Day_Num = myList[7]
d_Date = {} # <-- this is the dictionary of Class Objects
# open the file with all the Dates Data
myDateFile = "myDates.log"
f = open(myDateFile, "rb")
# parse the Data and add it to the Dictionary
for line in f:
myList = line.replace(' ','').split(',')
k = myList[0]
val = cMarsDates(myList)
d_Date[k] = val
来自文本文件的实际日期数据只是用逗号分隔的长字符串:(为了清楚起见,这些字符串的大小也被缩小了,就像类 def init 一样)
2012-12-30, 2012-12-30, 2013-01-05, 1, 12, Dec, 2012, 30, Sun
2012-12-31, 2012-12-30, 2013-01-05, 1, 12, Dec, 2012, 31, Mon
在我的主程序中,我导入了这些数据:
import MYDATES as myDate
从这里我可以像这样访问我的字典对象:
myDate.d_Date
一切正常。我的问题:有没有办法以某种方式将这些数据存储在 python 代码中,而不是存储在单独的文本文件中?该程序将始终需要相同的信息,并且永远不会改变。它就像一个美化的静态变量。我想如果我可以将它保存在 .pyc 文件中,那么它可能会运行得更快。好的,在你对我说“更快”或读取外部数据和创建字典所需的时间之前......它不需要很长时间(平均大约 0.00999 秒,我对其进行了基准测试)。这个问题只是为了我的启迪 - 以防我需要再次做这样的事情,但在更大的范围内,时间“可能”很重要。
我想将日期数据存储在数组(来自 VB 的想法)或 List(Python)中,然后将其提供给字典对象,但似乎您只能 .append 到 List 而不是给它预定的大小。然后我考虑创建一个或多个字典,但考虑到我拥有的数据量以及我必须通过这些字典阅读以创建另一个类对象字典的事实,这似乎是压倒性的。好像不太对。
除了将数据存储在单独的文本文件中并在代码中读取之外,任何人都可以建议一种不同的方法来填充我的类对象字典吗?
【问题讨论】:
-
你可以有字典文字。如果您打印(或pretty print)您的字典,您应该能够将其按原样嵌入到您的代码中。
标签: python class dictionary