作为一种练习,你将如何以Pythonic方式编写counter.elements()?

时间:2016-03-06 11:05:27

标签: python

如果我们需要在Python中实现counter.elements()(就像在Python中编写代码一样),以下工作,但我想知道更多Pythonic的写法是什么?

所以我认为它类似于:如果你有一个包含键和计数的字典,你如何返回一个包含数组中所有元素的数组?

import collections
from functools import reduce    # needed for Python 3

counter = collections.Counter(['hello', 'world', 'hello', 'hi', 'hello', 'hi'])

print([i for i in counter.elements()])

print(reduce(lambda a, b: a + b, [[k] * v for (k, v) in counter.items()]))

(最后一行是模拟counter.elements()的效果......可能是元素的不同顺序,这是不保证的。简单的代码,只是假设计数不是负数。)

所以问题是,如何以更好的方式或以更多的Pythonic方式编写最后一行。

1 个答案:

答案 0 :(得分:1)

只需使用list(counter.elements())