Python,如何使用计算和 FIFO 功能管理列表或字典中的多个数据

Python, how to manage multiple data in list or dictionary with calculations and FIFO functionality

我需要管理如下组织的多个数据:

插槽 1

timestamp value1 value2 value3 value4
xxxxxxxxx aaaaaa bbbbbb cccccc dddddd
......... ...... ...... ...... ......
......... ...... ...... ...... ......
......... ...... ...... ...... ......
......... ...... ...... ...... ......
xxxxxxxxx qqqqqq rrrrrr ssssss tttttt

插槽 2

timestamp value1 value2 value3 value4
xxxxxxxxx aaaaaa bbbbbb cccccc dddddd
......... ...... ...... ...... ......
......... ...... ...... ...... ......
......... ...... ...... ...... ......
......... ...... ...... ...... ......
xxxxxxxxx qqqqqq rrrrrr ssssss tttttt

......

插槽'n'

timestamp value1 value2 value3 value4
xxxxxxxxx aaaaaa bbbbbb cccccc dddddd
......... ...... ...... ...... ......
......... ...... ...... ...... ......
......... ...... ...... ...... ......
......... ...... ...... ...... ......
xxxxxxxxx qqqqqq rrrrrr ssssss tttttt

数据结构不应是Pandas数据框,最好是不使用外部库的本地结构

每个 Slot 都应该有一个固定的长度,并且新的数据(比如新行)应该用 FIFO 逻辑处理。所以最后一个数据应该附加在最后,第一个数据应该被提取,保持数据结构的总长度固定。

最后但并非最不重要的一点是,我需要向每个插槽添加一个额外的列来执行类似

的计算

“添加的列”=(“值 1”+“值 2”)/(“值 3”+“值 4”)

谢谢大家的帮助

除了问题的最后一部分,您可以使用以下内容 class 创建一个槽对象,您可以在其中按照您描述的方式存储数据。您可以根据需要创建任意数量的插槽并将它们存储在数组中以实现您想要的。

class Slot:
    maxrowlen = 5 #the maximum number of row you want in one slot
    coredict = {"TimeStamp":[],"Value1":[],"Value2":[],"Value3":[],"Value4":[]}

    def addrow(self,timestamp, value1, value2, value3, value4):
        if len(self.coredict["TimeStamp"])<self.maxrowlen:
            self.coredict["TimeStamp"].append(timestamp)
            self.coredict["Value1"].append(value1)
            self.coredict["Value2"].append(value2)
            self.coredict["Value3"].append(value3)
            self.coredict["Value4"].append(value4)
            print("Data successfully added to slot")
        else:
            for i in range(len(self.coredict["TimeStamp"])-1):
                self.coredict["TimeStamp"][i]=self.coredict["TimeStamp"][i+1]
                self.coredict["Value1"][i]=self.coredict["Value1"][i+1]
                self.coredict["Value2"][i]=self.coredict["Value2"][i+1]
                self.coredict["Value3"][i]=self.coredict["Value3"][i+1]
                self.coredict["Value4"][i]=self.coredict["Value4"][i+1]
            
            index = self.maxrowlen-1
            self.coredict["TimeStamp"][index] = timestamp
            self.coredict["Value1"][index]=value1
            self.coredict["Value2"][index]=value2
            self.coredict["Value3"][index]=value3
            self.coredict["Value4"][index]=value4

    def getfirst(self):
        index = 0
        for value in self.coredict.values():
            print(" | " + str(value[index]) + " | ", end="")
        print("")
    
    def printall(self):
        for i in range(len(self.coredict["TimeStamp"])):
            index = i
            for value in self.coredict.values():
                print(" | " + str(value[index]) + " | ", end="")
            print("")

Slot中的三种方法class:
1. addrow() - 在slot的末尾添加一行(根据FIFO)
2. getfirst() - 打印添加的第一行的数据(根据 FIFO)
3. printall() - 打印插槽中的所有数据


这个class可以按照您需要的方式存储数据。