【问题标题】:'Counter' object has no attribute 'count'“计数器”对象没有属性“计数”
【发布时间】:2021-01-28 02:32:16
【问题描述】:

有两个列表,我想检查有多少元素是重复的。假设列表一是l1 = ['a', 'b', 'c', 'd', 'e'],列表二是l2 = ['a', 'f', 'c', 'g']。由于ac 在两个列表中,因此,输出应该是2,这意味着两个列表中有两个元素重复。下面是我的代码,我想计算计数器中有多少 2。我不知道如何计算。

l1 = ['a', 'b', 'c', 'd', 'e']
l2 = ['a', 'f', 'c', 'g']
from collections import Counter
    c1 = Counter(l1)
    c2 = Counter(l2)
    sum = c1+c2
    z=sum.count(2)

【问题讨论】:

  • 错误说明了一切。 sum.count() 不是一回事。您将需要找到解决问题的不同方法。
  • 问题...每个元素在每个列表中只出现一次吗?
  • official docs 没有任何用于 Counter 对象的 count 方法,您以完全不同的方式获得计数。为什么你认为count() 会起作用?您希望它返回哪个项目的计数?
  • @Code-Apprentice 是的,每个列表只出现一次。
  • @Bob 然后使用set,如下面的答案所示,而不是Counter

标签: python list collections counter


【解决方案1】:

你想要的是set.intersection(如果每个列表中没有重复项):

l1 = ['a', 'b', 'c', 'd', 'e']
l2 = ['a', 'f', 'c', 'g']

print(len(set(l1).intersection(l2)))

输出:

2

【讨论】:

  • 这只有在每个元素在每个列表中只出现一次时才有效。
  • @Code-Apprentice 这个问题似乎就是这样。
【解决方案2】:

每次我们使用计数器时,它都会将列表转换为字典。所以它抛出了错误。您可以简单地更改列表的数量并运行以下代码来获取重复值的确切数量。

# Duplicate elements in 2 lists
l1 = ['a', 'b', 'c', 'd', 'e']
l2 = ['a', 'f', 'c', 'g']# a,c are duplicate
from collections import Counter

c1 = Counter(l1)
c2 = Counter(l2)
sum = c1+c2
j = sum.values()
print(sum)
print(j)

v = 0
for i in j:
    if i>1:
        v = v+1

print("Duplicate in lists:", v)

输出:

Counter({'a': 2, 'c': 2, 'b': 1, 'd': 1, 'e': 1, 'f': 1, 'g': 1})
dict_values([2, 1, 2, 1, 1, 1, 1])
Duplicate in lists: 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2012-09-10
    • 2015-06-30
    • 1970-01-01
    相关资源
    最近更新 更多