Python 使用两条语句在for循环和progressbar更新中添加到字典
在gdic中,我有3个键(1,2,3)和值。在第页中,两个键(1,3)有两个等号。为什么pdic只增加了一个值?“lol”打印两次,但必须打印一次,是吗?进度条对此无法正常工作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
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()