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

时间:2012-10-25 06:07:11

标签: python python-2.7 defaultdict

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

例如:

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

1 个答案:

答案 0 :(得分:9)

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

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