2012-10-25 1 views
1

min()을 defaultdict 객체에 사용하는 경우 문자열의 dict 계산 인덱스에서 사용되는 경우 이상하게 최대 값을 반환합니다. 예를 들어collections.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) 

답변

9

items()(key, value) 튜플로 항목을 반환합니다. 이것은 min (또는 다른 것)에 의해 비교 될 때 첫 번째 키와 값에 의해 비교된다는 것을 의미합니다. ' '은 "최소"문자열 (즉, ' ' < 'a', ' ' < 'b' 등)이므로 반환되는 문자열입니다.

터플의 두 번째 항목을 비교 키로 사용하려면 min을 말해야합니다. min(x.items(), key=lambda a: a[1])하십시오.

+1

또는 실제로 키가 필요하지 않은 경우 키만 원할 경우 'min (x.values ​​())' – wim

+3

또는'min (x, key = x.get) ' –