i有一个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)
我想您可以使用Counter
的update
方法将0添加到唯一列表中的所有键
>>> 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
,则稍长于:
>>> from collections import Counter
>>> x = Counter(['abc','def','abc'])
>>> y = ['abc', 'def', 'abc', 'abc', 'ghi', 'jkl','jkl']
>>> for k in y:
x[k] += 0