用于展平列表的Python Counter元素

Ali*_*MAR 2 python counter python-collections

现在要压扁Counter元素我正在使用代码

import operator
from collections import Counter
from functools import reduce

p = Counter({'a': 2, 'p': 1})
n_p = [[e] * p[e] for e in p]
f_p = reduce(operator.add, n_p)

# result: ['a', 'a', 'p']
Run Code Online (Sandbox Code Playgroud)

所以我很想知道,如果可以更直接地完成.

Ada*_*ith 5

这是 Counter.elements

p = Counter({'a': 2, 'p': 1})
p.elements()  # iter(['a', 'a', 'p'])
list(p.elements())  # ['a', 'a', 'p']
''.join(p.elements())  # 'aap'
Run Code Online (Sandbox Code Playgroud)

请注意(根据文档)

元素以任意顺序返回

因此,您可能希望对结果进行排序以获得稳定的订单.