python - collections.defaultdict() 上的 min() 返回最大计数

标签 python python-2.7 defaultdict

在 defaultdict 对象上使用 min() 时,如果用在 dict 上计算字符串的索引,它会奇怪地返回最大值。

例如:

>>> import collections
>>> defaultdict=collections.defaultdict
>>> x=defaultdict(int)
>>> string="lol I am a lol noob"
>>> for k in string:
    x[k]+=1


>>> x
defaultdict(<type 'int'>, {'a': 2, ' ': 5, 'b': 1, 'I': 1, 'm': 1, 'l': 4, 'o': 4, 'n': 1})
>>> min(x.items())
(' ', 5)

最佳答案

items()将项目返回为 (key, value)元组。这意味着当它们按 min(或其他任何东西)进行比较时,它们首先按键比较,然后按值比较。自 ' '是“最小”字符串(即 ' ' < 'a'' ' < 'b' 等),即返回的内容。

您需要告诉 min 使用元组的第二项作为比较键。做min(x.items(), key=lambda a: a[1]) .

关于python - collections.defaultdict() 上的 min() 返回最大计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13062566/

相关文章:

python - python 3.4.3 上的 pydoop 安装

python - K均值: Reassign data point to second nearest?

Python 不可变引用集合

Python Selenium

python - 将 defaultdict 与多处理一起使用?

python - 如何连接或组合具有重叠键的默认字典的两个默认字典?

python - 根据 YAML 文件中的用户输入将自定义字段添加到 JSON 文件 - Python3

python - 在 macOS High Sierra 上安装 mysql-python

python - 如何避免在每次导入后重新启动 python shell

python - Python 集合模块中的 defaultdict 真的比使用 setdefault 快吗?