2012-10-25 30 views
1

當defaultdict對象上使用min(),如果在一個字典計數字符串的索引用它奇怪返回最大。分鐘()上collections.defaultdict()返回最大計數

例如:

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

回答

9

items()返回的項目,如(key, value)元組。這意味着,當它們由分鐘(或由任何其他類型)相比,他們相比通過鍵第一,然後通過值。由於' '是「最低限度」的字符串(即' ' < 'a'' ' < 'b'等),也就是返回什麼。

你需要告訴分鐘使用元組的第二個項目作爲比較關鍵。做min(x.items(), key=lambda a: a[1])

+1

或者,如果你沒有實際需要的關鍵,只是'分鐘(x.values())' – wim

+3

或'分鐘(X,鍵= x.get)'如果你只是想關鍵 –