计算Python Dictionary中的特定值

时间:2018-02-24 14:05:53

标签: python loops dictionary input

尝试计算特定值在Python字典中出现的次数,但似乎无法使其工作。

我的字典设置如下:

  

count =({' John':2,' Sam':1,' Brian':2,' Brian':2 ,' Brian':1,' Sam':2,   ' John':2,' Henry':2,' Brian':1})

我要得到结果,以便用户输入' Brian'结果将是:

  

4

或者如果用户要输入“Sam'结果将是:

  

2

number = 0
userInput = input("Please enter a player:  ")
for k, v in count.items():
        if k == userInput:
            number =+ 1
print(number)

有没有更好的方法来做到这一点,因为目前如果要输入' Sam'它只会输出' 1'? 谢谢!

2 个答案:

答案 0 :(得分:2)

字典只能有一次密钥。 当您创建count = ({'John': 2, 'Sam': 1, 'Brian': 2, 'Brian': 2, 'Brian': 1, 'Sam': 2, 'John': 2, 'Henry': 2, 'Brian': 1})时,Python存储{'John': 2, 'Brian': 1, 'Sam': 2, 'Henry': 2}(值可能会更改,因为没有关于为多次出现的键保留的值的规则)。 Cf the Python documentation for dictionaries

所以计数总是1。

如果您想多次使用密钥,请不要使用字典,而是使用对列表(大小为2的元组)。

答案 1 :(得分:1)

由于python词典必须具有唯一键,因此计算键发生的次数在此处不起作用。您可以阅读documentation以获取有关此数据结构的更全面的详细信息。

此外,您可以在字典中存储每个名称的计数:

counts = {'Brian': 4, 'John': 2, 'Sam': 2, 'Henry': 1}

然后调用每个键以获取计数值:

>>> counts['Brian']
4
>>> counts['Sam']
2

您也可以将名称保留为列表,并调用collections.Counter来计算名称出现的次数:

>>> from collections import Counter
>>> names = ['John', 'Sam', 'Brian', 'Brian', 'Brian', 'Sam', 'John', 'Henry', 'Brian']
>>> Counter(names)
Counter({'Brian': 4, 'John': 2, 'Sam': 2, 'Henry': 1})

返回Counter()个对象,dict的子类。