Python列表在使用“POST”进行一次迭代后变为空,而使用“GET”可以正常工作?

2024-09-30 12:17:56 发布

您现在位置:Python中文网/ 问答频道 /正文

这部分函数的目的是从其他函数构建的词典中获取与某个日期相关的数据,并将它们排列到一个词典中。当dayId指的是当前日期时,部件工作正常。但是当从HTML中检索到日期时,在for循环中进行一次迭代后,stallOperatingHour列表将变为0。为什么会这样?我该怎么解决

如果没有来自HTML的输入,dayId指的是当前日期

我添加了打印函数,以查看程序在遇到错误之前能走多远(下面列出了一些打印函数)。从HTML中成功地检索到输入,第一次迭代运行良好,并且我们创建列表的字典在第二次迭代中是正确的

def getAvailableStalls():

    stallsDict = readStall()
    stallMenuByDayDict = readStallMenuByDay()
    stallOperatingHourDict = readStallOperatingHour()
    allDaysDict = readDay()
    menuItemsDict = readMenuItems()
    try: 
        dayId,currentHour,dt_string = filterByTime()  #filterByTime is the function retrieving input and processing them
    except: 
        dayId,currentHour = -1,-1
    if dayId == -1: 
        currentDT = datetime.now()
        currentDay = currentDT.strftime('%A')
        currentHour = int(currentDT.strftime('%H'))
        dayId = list(k for k, v in allDaysDict.items() if v == currentDay)[0]
        dt_string = datetime.now().strftime("%A, %x %H:%M:%S")

    currentAvailableStallsDict = {}
    unavailableStalls = 0

    # Get stalls by current DT
    for stallId, stallDetails in sorted(stallsDict.items()):
        # Get stall operating hour
        # Get Stall Operating Hours on Weekends
        if(dayId == "6" or dayId == "7"):
            stallOperatingHour = list(v for k, v in stallOperatingHourDict if v[0] == stallId and v[1] == dayId)
            startOperatingHour = stallOperatingHour[0][2]
            endOperatingHour = stallOperatingHour[0][3]
        else:
            # Get Stall Operating Hours on Weekdays
            stallOperatingHour = list(v for k, v in stallOperatingHourDict if v[0] == stallId and (v[1] == ''))
            listTemp = list(v for k, v in stallOperatingHourDict if v[0] == stallId and v[4] == "0" and v[1] == dayId)
            if(len(listTemp) != 0):
                stallOperatingHour.insert(1, listTemp[0])
            print("before start operating hour")
            print(stallOperatingHourDict)
            print(stallOperatingHour)
            startOperatingHour = float(stallOperatingHour[0][2])
            print("pass start operating hour")
            endOperatingHour = float(stallOperatingHour[0][3])
            print("pass end operating hour")

下面是给出的输出

Tuesday, 09/08/20 04:32:00              #correct input retrieved

before start operating hour             #first iteration

dict_items([('1', ('1', '', '7', '0', '1')), ('2', ('1', '6', '7', '0', '1')), ('3', ('1', '7', '10.5', '22', '1')), ('4', ('2', '1', '7', 
'19', '0')), ('5', ('2', '2', '7', '22', '0')), ('6', ('2', '3', '8', '20', '0')), ('7', ('2', '4', '10', '22', '0')), ('8', ('2', '5', '9', '21', '0')), ('9', ('2', '6', '7', '19', '0')), ('10', ('2', '7', '6', '19', '0')), ('11', ('3', '', '11', '21', '1')), ('12', ('3', '6', '11', '14', '1')), ('13', ('3', '7', '', '', '1')), ('14', ('4', '', '8', '22', '1')), ('15', ('4', '6', '8', '22', '1')), ('16', ('4', '7', '11', '22', '1')), ('17', ('5', '', '11', '21', '1')), ('18', ('5', '6', '11', '14', '1')), ('19', ('5', '7', '', '', '1'))])

[('1', '', '7', '0', '1')]

pass start operating hour

pass end operating hour

before start operating hour             #second iteration

dict_items([('1', ('1', '', '7', '0', '1')), ('2', ('1', '6', '7', '0', '1')), ('3', ('1', '7', '10.5', '22', '1')), ('4', ('2', '1', '7', 
'19', '0')), ('5', ('2', '2', '7', '22', '0')), ('6', ('2', '3', '8', '20', '0')), ('7', ('2', '4', '10', '22', '0')), ('8', ('2', '5', '9', '21', '0')), ('9', ('2', '6', '7', '19', '0')), ('10', ('2', '7', '6', '19', '0')), ('11', ('3', '', '11', '21', '1')), ('12', ('3', '6', '11', '14', '1')), ('13', ('3', '7', '', '', '1')), ('14', ('4', '', '8', '22', '1')), ('15', ('4', '6', '8', '22', '1')), ('16', ('4', '7', '11', '22', '1')), ('17', ('5', '', '11', '21', '1')), ('18', ('5', '6', '11', '14', '1')), ('19', ('5', '7', '', '', '1'))])

[] #and it becomes empty

IndexError: list index out of range

如果一切正常,第二次迭代应该产生stallOperatingHour=[('2','2','7','22','0')]


Tags: andinforgetifoperatingitemsstart

热门问题