python组长选举问题,为什么输出不正常,代码哪里有问题呀

问题遇到的现象和发生背景

为什么没有统计所有提名者呀

问题相关代码,请勿粘贴截图
vote=['鲁智深','柴进','宋江','吴用','林冲','卢俊义',\
      '柴进','柴进','孙二娘','史进','吴用','卢俊义',\
      '柴进','林冲','宋江','宋江','卢俊义','吴用','吴用']
vote2=[]
dic={}
for i in vote:
    if i not in vote2:
        dic.update({i:vote.count(i)})
        vote2.append(i)
        while i in vote:
            vote.remove(i)
print(dic)


运行结果及报错内容

img

我想要达到的结果

正确输出所有被提名者,返回键值对列表,排序后由高到低输出,如图

img

vote=['鲁智深','柴进','宋江','吴用','林冲','卢俊义',\
      '柴进','柴进','孙二娘','史进','吴用','卢俊义',\
      '柴进','林冲','宋江','宋江','卢俊义','吴用','吴用']
setv = list(set(vote))
sort = sorted([(vote.count(v),v) for v in setv],reverse=True)
for s in sort:
    print(f'{s[1]}\t{s[0]}')

>>> 
执行结果如下:
柴进     4
吴用     4
宋江     3
卢俊义   3
林冲     2
鲁智深   1
孙二娘   1
史进     1