web-dev-qa-db-ja.com

pythonでカウンターをキーでソートする

次のようなカウンターがあります。

_Counter: {('A': 10), ('C':5), ('H':4)}
_

キーをcounter.most_common()ではなくアルファベット順に並べ替えたい

これを達成する方法はありますか?

28
corvid

sorted を使用するだけです:

>>> from collections import Counter
>>> counter = Counter({'A': 10, 'C': 5, 'H': 7})
>>> counter.most_common()
[('A', 10), ('H', 7), ('C', 5)]
>>> sorted(counter.items())
[('A', 10), ('C', 5), ('H', 7)]
45
falsetru
>>> from operator import itemgetter
>>> from collections import Counter
>>> c = Counter({'A': 10, 'C':5, 'H':4})
>>> sorted(c.items(), key=itemgetter(0))
[('A', 10), ('C', 5), ('H', 4)]
8
Roman Pekar

Python 3では、コレクションの most_common 関数を使用できます。カウンター:

x = ['a', 'b', 'c', 'c', 'c', 'd', 'd']
counts = collections.Counter(x)
counts.most_common(len(counts))

これは、collections.Counterで利用可能なmost_common関数を使用します。これにより、nの最も一般的なキーのキーとカウントを見つけることができます。

1
wwwilliam

値を並べ替えられたリストとして取得するには

array              = [1, 2, 3, 4, 5]
counter            = collections.Counter(array)
sorted_occurrences = list(dict(sorted(counter.items())).values())
0
Recep şen
sorted(counter.items(),key = lambda i: i[0])

例えば:

arr = [2,3,1,3,2,4,6,7,9,2,19]
c = collections.Counter(arr)
sorted(c.items(),key = lambda i: i[0])

外側:[(1、1)、(2、3)、(3、2)、(4、1)、(6、1)、(7、1)、(9、1)、(19、1) ]辞書形式を取得したい場合は、

dict(sorted(c.items(),key = lambda i: i[0]))
0
Calab