使用计数器对数对Python

时间:2018-09-17 13:44:10

标签: python-2.7

我在线评估了以下问题:

输入1:整数-列表的长度

输入2:整数列表-由不同的数字组成

输出:整数

问题:从列表中找到可能的总对数。

示例:5,[10,23,2,10,23]

由于10和23出现两次,而2仅出现一次,所以有2对。因此,结果应为2。

因此,我执行了以下操作,并且其中一个测试用例失败了。没有显示测试用例,所以我对哪里出错很困惑。代码是:

dict=Counter(input2)
pairs=0
count=[]
for i in dict.values() :
        count.append(i)
for j in count :
        pairs+=j//2
return pairs

除了一个测试用例,其他所有七个似乎都满足。请帮帮我。

1 个答案:

答案 0 :(得分:0)

您可以简单地将collections.Counter返回的dict的每个条目的值除以2:

from collections import Counter
l = [10,10,10,20,20,20,45,46,45]
print({k: v // 2 for k, v in Counter(l).items()})

这将输出:

{10: 1, 20: 1, 45: 1, 46: 0}

或者,如果您只想要总对数:

print(sum(v // 2 for v in Counter(l).values()))

这将输出:

3