我有一个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)
答案 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