【发布时间】:2014-03-13 02:37:54
【问题描述】:
我有一个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)
【问题讨论】:
-
我认为你的方法是最好的。如果您的第二个列表很长,您可以将
np.array(sorted(set(...)))替换为np.unique(...)
标签: python arrays list numpy counter