Python 使用两条语句在for循环和progressbar更新中添加到字典

Python 使用两条语句在for循环和progressbar更新中添加到字典,python,dictionary,progress-bar,Python,Dictionary,Progress Bar,在gdic中,我有3个键(1,2,3)和值。在第页中,两个键(1,3)有两个等号。为什么pdic只增加了一个值?“lol”打印两次,但必须打印一次,是吗?进度条对此无法正常工作 length = len(self._gdic) count = 1.0 count2 = 1 pbar = ProgressBar().start() for k in self.gdic.keys(): for i in page: i

在gdic中,我有3个键(1,2,3)和值。在第页中,两个键(1,3)有两个等号。为什么pdic只增加了一个值?“lol”打印两次,但必须打印一次,是吗?进度条对此无法正常工作

    length = len(self._gdic)
    count = 1.0
    count2 = 1
    pbar = ProgressBar().start()

    for k in self.gdic.keys():
        for i in page:
            if (k == i[0].decode('utf-8')): 
                pdic[i[0]] = i[2].lower() 
                percent_done = count / length
                percent_done = round(percent_done * 100)
                pbar.update(percent_done)
                count += 1.0
                count2 = 1
                break
            elif (count2 == length):
                percent_done = count / length
                percent_done = round(percent_done * 100)
                pbar.update(percent_done)
                count += 1.0
                count2 = 1
                print("lol")
                break
            else:
                count2 += 1
                continue
    pbar.finish()
编辑:好的,我可能找到了解决方案

    length = len(page)
    length2 = len(self.gdic)
    count = 1.0
    count2 = 1
    pbar = ProgressBar().start()        
    for k in self.gdic.keys():
        for i in page:
            if (k == i[0].decode('utf-8')): 
                pdic[i[0]] = i[2].lower() 
                percent_done = count / length2
                percent_done = round(percent_done * 100)
                print("ss")
                print k
                pbar.update(percent_done)
                count += 1.0
                count2 = 1
                break
            else:
                if (count2 == length):
                    percent_done = count / length2
                    percent_done = round(percent_done * 100)
                    print("lol")
                    print k
                    pbar.update(percent_done)
                    count += 1.0
                    count2 = 1
                    continue
                count2 += 1
    pbar.finish()
说明:
页面长度(dict)可以不同于gdic的长度(dict)。如果我们在页面中找到k,则进度条正在更新,count2设置为默认值。如果k不在页面中,我们必须检查count2和(页面的)长度值。如果它们相同,则更新进度条并将count2设置为默认值。如果它们不一样,我们增加count2。我正在使用打印来检查此解决方案的工作情况。

这很难理解-例如,长度的值是多少,以及“两个键(1,3)的两个相等”是什么?什么是回溯消息?我可以猜到这里发生了什么,比如Progressbar()竞赛条件,但由于我们这里没有正确的错误消息,这只是一个粗略的猜测。对不起,我的英语太差了。例如:长度为3,所以gdic有3对(键、值),页面长度太长。gdic中的对:{“1”:“aa”,“2”:“bb”,“3”:“cc”}。在第页中,我们找到了两个相等的键“if(k==i[0]。decode('utf-8')):”(例如:1和3)。键2不在页面中,因此计数2增加。错误:ValueError:值超出进度条的范围。很抱歉,这仍然不清楚:“print(i,str(type(i))”的输出是什么,当放置在第一个if之前时。“页面”中的确切键/值对是什么?此外,如果你编辑了你的问题并粘贴了完整的回溯,这会容易得多。否则我想我在这里帮不上忙了。@brainovergrow,谢谢你的回答。我用完美的解决方案更新了这个问题。
    length = len(page)
    length2 = len(self.gdic)
    count = 1.0
    count2 = 1
    pbar = ProgressBar().start()        
    for k in self.gdic.keys():
        for i in page:
            if (k == i[0].decode('utf-8')): 
                pdic[i[0]] = i[2].lower() 
                percent_done = count / length2
                percent_done = round(percent_done * 100)
                print("ss")
                print k
                pbar.update(percent_done)
                count += 1.0
                count2 = 1
                break
            else:
                if (count2 == length):
                    percent_done = count / length2
                    percent_done = round(percent_done * 100)
                    print("lol")
                    print k
                    pbar.update(percent_done)
                    count += 1.0
                    count2 = 1
                    continue
                count2 += 1
    pbar.finish()