尝试计算特定值在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'? 谢谢!
答案 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
的子类。