在 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/