2

在 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)
4

1 回答 1

11

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

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

于 2012-10-25T06:09:39.880 回答