【问题标题】:Counting specific values within Python Dictionary计算 Python 字典中的特定值
【发布时间】:2018-02-24 14:05:53
【问题描述】:

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

我的字典是这样设置的:

count = ({'John': 2, 'Sam': 1, 'Brian': 2, 'Brian': 2, 'Brian': 1, 'Sam': 2, “约翰”:2,“亨利”:2,“布莱恩”: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'? 谢谢!

【问题讨论】:

  • 打印你的字典,看看你的问题。键在字典中是唯一的。

标签: python loops dictionary input


【解决方案1】:

一个字典只能有一个键。 当您创建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}(值可以更改,因为对于多次出现的键,没有关于保留什么值的规则)。参见the Python documentation for dictionaries

所以计数将始终为 1。

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

【讨论】:

    【解决方案2】:

    由于 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 的子类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-09
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      相关资源
      最近更新 更多