我在线评估了以下问题:
输入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
除了一个测试用例,其他所有七个似乎都满足。请帮帮我。
答案 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