设置一个计数器来知道从哪个数字开始



我希望下面的计数器检查列表中字典中的order num类。

...code...
self.counter = count(1)
def submit(self):
        if Database.xoomDatabase[0]["Num Orden"] == next(self.counter):
            self.counter = Database.xoomDatabase["Num Orden"]
        Database.xoomDatabase.append(ordenOrganiz)

我之所以使用这种计数器,是因为每当应用程序关闭时,我都会转储一个包含Database.xoomDatabase的pickle文件。当应用程序执行时,pickle转储会被加载,其中的所有字典都会被推回到Database.xoom数据库中。这是保存在Database.xoomPatabase:上的字典

global ordenOrganiz
        ordenOrganiz = {"Num Order": nicenum,
                        "Nombre": nombre, 
                        "Email": email,
                        "Num Tel/Cel": num,
                        "Orden Creada:": fechacreacion1,
                        "Fecha de Entrega": fechaentrega}
        print(ordenOrganiz["Nombre"])
        return dict(ordenOrganiz)

我的问题是:如何在从pickle转储文件加载的最后一个"订单号"中启动计数器?

编辑:在Anand S Kumar的帮助下,我就是这样做到的:

if len(Database.xoomDatabase) == 0:
            newCount = 0
        else:
            newCount = max(Database.xoomDatabase, key = lambda x:x['Num Orden'])["Num Orden"]
        nombre = contents1
        nicenum = int(newCount) + 1

此循环检查列表中是否有已保存的词典。如果没有dics。,计数从1开始。如果已经保存了dic。,计数将从保存到pickle转储中的最后一个"订单号"开始。

xoomDatabase = []
if path.isfile(file_path) == False:
    open(file_path, "w").close()
else:
    loadLis = open(file_path, "rb")
    dalis = pickle.load(loadLis)
    loadLis.close()
    xoomDatabase.extend(dalis)

这个循环检查是否有要加载的文件,如果没有,它会更正一个。如果已经有一个保存的pickle转储,那么它将用以前保存的dict加载列表。

您可以直接在类内部创建一个类变量,然后使用Class.<variable>访问它,也可以在__init__()函数中使用此Class.<variable>初始化每个变量的计数器并递增计数器。

示例-

class TempClass
    counterInit = 0
    def __init__(self):
        self.counter = TempClass.counterInit
        TempClass.counterInit += 1
    ...

然后在程序开始时,从pickle转储中读取数据,然后取最大的计数器并将其设置为计数器,如下例所示。

示例-

TempClass.counterInit = max(Database.xoomDatabase, key = lambda x:x['Num Orden'])

上述max()给出了字典列表中最大的Num Orden

相关内容

  • 没有找到相关文章

最新更新