将计数器的值分配给列表
Assign value from Counter to a list
假设我有以下列表:
l1 = ['Hello', 'world', 'world']
l2 = ['Hello', 'world', 'world', 'apple']
对于 l1
我将不同的元素计算为:
Counter(l1)
给出:
Counter({'Hello': 1, 'world': 2})
现在我想遍历 l2
并将上面的值分配给它,这样我得到:
[1,2,2,0]
如您所见,我们为 apple
分配了 0,因为它在计数器中没有值。我想知道我该怎么做?
您可以像这样使用列表理解。
from collections import Counter
l1 = ['Hello', 'world', 'world']
l2 = ['Hello', 'world', 'world', 'apple']
c1 = Counter(l1)
res = [c1[i] for i in l2]
print(res)
输出
[1, 2, 2, 0]
旧解决方案(在 user2357112 的评论支持 Monica 之前)
res = [c1.get(i, 0) for i in l2]
假设我有以下列表:
l1 = ['Hello', 'world', 'world']
l2 = ['Hello', 'world', 'world', 'apple']
对于 l1
我将不同的元素计算为:
Counter(l1)
给出:
Counter({'Hello': 1, 'world': 2})
现在我想遍历 l2
并将上面的值分配给它,这样我得到:
[1,2,2,0]
如您所见,我们为 apple
分配了 0,因为它在计数器中没有值。我想知道我该怎么做?
您可以像这样使用列表理解。
from collections import Counter
l1 = ['Hello', 'world', 'world']
l2 = ['Hello', 'world', 'world', 'apple']
c1 = Counter(l1)
res = [c1[i] for i in l2]
print(res)
输出
[1, 2, 2, 0]
旧解决方案(在 user2357112 的评论支持 Monica 之前)
res = [c1.get(i, 0) for i in l2]