Python 2.7 使用计数器计数对时出现问题

Python 2.7 使用计数器计数对时出现问题,python-2.7,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() :

我参加了一次在线评估,我被问到了以下问题:

输入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

除了一个测试用例外,其他7个似乎都满足要求。请帮帮我。

您可以简单地将
集合的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}
3
或者,如果您只需要对的总数:

print(sum(v // 2 for v in Counter(l).values()))
这将产生:

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

你能解释一下配对是什么意思吗?例如,列表是[10,10,10,20,20,20,45,46,45]。10发生3次,因此可以形成1对。20发生三次。因此,可以再次形成1对。45发生两次,因此可以再次形成一对。46出现一次,因此0对。总对数=1+1+1=3@hiro-对于大于3的值,将形成多对主角。@Hiro,我也尝试输入了4次相同的数字,并且能够获得正确的预期输出。例如,如果10出现四次&20两次,它仍然应该返回3,因为两对10和一对20是可能的。@rithwik rajendran代码似乎工作正常。你确定没有像“没有配对时返回-1”这样的条件吗?我得到了配偶,但我的代码中有问题吗?它应该工作得很好,不是吗?是的,尽管有一些冗余代码,它应该工作得很好。你有失败的测试输入吗?没有。显然他们没有给出失败的测试用例。