我有一份清单清单:
[['a','b','c'], ['a'], ['a','b']]
Run Code Online (Sandbox Code Playgroud)
我想对它进行排序并返回单个列表,因此输出如下所示:
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
即按每个元素出现的次数排序.a出现3次,b出现两次,c出现一次.
我该怎么做呢?
使用collections.Counter,, itertools.chain.from_iterable和列表理解:
from itertools import chain
from collections import Counter
data = [['a', 'b', 'c'], ['a'], ['a', 'b']]
d = Counter(chain.from_iterable(data))
print([i for i, c in d.most_common()])
Run Code Online (Sandbox Code Playgroud)
输出:
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
注意:如果要计算列表中某些项目的频率,请记住使用Counter,这非常有用.
使用itertools.chain.from_iterable()先压平列表,然后collections.Counter()计数的元素.
>>> from collections import Counter
>>> from itertools import chain
>>> [x[0] for x in Counter(chain.from_iterable(mylist)).most_common())
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |