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



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)

我想您可以使用Counterupdate方法将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

最新更新