遍历列表中的字典以从匹配键中找到值的总和。 (计票)

时间:2019-05-01 00:25:02

标签: python list loops dictionary

我无法上班。我想做的是获得选票。键是候选人的姓名,值是投票数。从用户输入中收集该信息,并打印出每个候选人的最终票数。

from collections import Counter

name_vote =[]
count = int(input('How many?'))

while count >=1: 
    a=input('Name')
    b=input('Vote')
    c={ a:b }
    name_vote.append(c)
    count = count - 1

print(name_vote)

c = Counter()
for d in name_vote:
    c.update(d)

print(c)

用户首先告诉您有多少个投票输入(这是计数)

所以输入看起来像这样: 多少? = 6

约翰2

条例草案5

约翰4

斯科特11

约翰3

斯科特1

结果:(打印出)

约翰福音9

条例草案5

斯科特12

这是非常新的,非常感谢您的帮助。试图在其他帖子中查找解决方案,这是我使用计数器找到的地方。但是在我的代码中不起作用。产生错误:

Traceback (most recent call last):
  File "c:/Users/Rghol5212/hello/Dico.py", line 30, in <module>
    c.update(d)
  File "C:\Users\Rghol5212\AppData\Local\Programs\Python\Python37- 
 32\lib\collections\__init__.py", line 649, in update
    self[elem] = count + self_get(elem, 0)
TypeError: can only concatenate str (not "int") to str

谢谢。

3 个答案:

答案 0 :(得分:0)

尝试改用defaultdict。如果该名称在词典中不存在,则将使用默认值零。如果名称存在,投票将增加计数。

from collections import defaultdict

name_vote = defaultdict(int)

count = int(input('How many?'))

while count >=1: 
    a=input('Name')
    b=input('Vote')
    name_vote[a] = name_vote[a] + int(b)
    count = count - 1

for k,v in name_vote.items():
    print("{} {}".format(k,v))

答案 1 :(得分:0)

使用Counter

from collections import Counter

name_vote = Counter()

count = int(input('How many? '))

while count >= 1:
    name = input('Name ')
    vote = int(input('Vote '))
    name_vote += {name: vote}
    count -= 1

for name, cnt in name_vote.items():
    print("Name: {}, Vote: {}".format(name, cnt))

答案 2 :(得分:0)

我认为问题出在webviewSettings.setMediaPlaybackRequiresUserGesture(false); 行中。从输入中获得b=input('Vote')时,其类型为b,则需要将其更改为string,以便可以添加数字。通过添加一行代码int来进行尝试。