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'、それが返されます。

タプルの 2 番目の項目を比較キーとして使用するように min に指示する必要があります。してくださいmin(x.items(), key=lambda a: a[1])

于 2012-10-25T06:09:39.880 に答える