如何从唯一列表和Counter对象创建计数列表?

时间:2014-03-13 02:37:54

标签: python arrays list numpy counter

我有一个Counter()对象,它可以计算字符串列表的出现次数。我有一个独特的字符串列表。我需要从计数器中产生一个计数列表,然后将零写入其他具有0计数的字符串实例。

我可以按照以下方式执行此操作但是可以以更高效/ pythonic的方式实现相同的z列表吗?

from collections import Counter
x = Counter(['abc','def','abc'])
uniq = sorted(set(['abc', 'def', 'abc', 'abc', 'ghi', 'jkl','jkl']))
z = [x[i] for i in uniq]

输出

>>> z
[2, 1, 0, 0]
>>> uniq
['abc', 'def', 'ghi', 'jkl']

实际上,最终目标是获得np.array(z)np.array(uniq)

1 个答案:

答案 0 :(得分:2)

我想您可以使用Counter的{​​{1}}方法将0添加到唯一列表中的所有键

update

因此>>> from collections import Counter >>> x = Counter(['abc','def','abc']) >>> y = ['abc', 'def', 'abc', 'abc', 'ghi', 'jkl','jkl'] >>> x.update(dict.fromkeys(y, 0)) 现在包含您想要的键和值。

或者,如果您想避免构建中间x,则稍长一些:

dict