比较4个数字,找出3是否相同

时间:2017-11-02 20:07:52

标签: python list

我有以下Python list

mylist = [a, b, c, d]

其中a,b,c,dintegers

我想比较4个数字,看看它们中的3是否相同。

我尝试将list转换为set,但这对我没有帮助。

8 个答案:

答案 0 :(得分:4)

尝试collections.Counter

import collections

x = [1, 2, 1, 1]
counter = collections.Counter(x)
if 3 in counter.values():
    print('3 are the same')

输出:

3 are the same

<强>更新

如果您有兴趣检查3次或更多次事件,可以检查Counter中的最大值,如下所示:

if max(counter.values()) >= 3:
    print('3 or more are the same')

这种方法的另一个优点是它可以在没有修改的情况下适用于更大的列表。

答案 1 :(得分:3)

--network=host

答案 2 :(得分:2)

我建议使用collections.Counter

将列表转换为计数器。计数器应该有两个键,其中一个值应为3:

In [1]: from collections import Counter

In [2]: c = Counter([0, 1, 1, 1])

In [3]: len(c) == 2
Out[3]: True

In [4]: 3 in c.values()
Out[4]: True

简而言之:

In [5]: len(c) == 2 and 3 in c.values()
Out[5]: True

让我们尝试一个不符合标准的例子:

In [8]: d = Counter([0, 0, 1, 1])

In [9]: len(d) == 2 and 3 in d.values()
Out[9]: False

答案 3 :(得分:1)

以这种方式:

mylist = [a, b, c, d]
d = {}

for i in mylist:
   d[i] = d.get(i, 0) + 1 

if 3 in d.values():
   print("three are the same")

答案 4 :(得分:1)

此解决方案使用collections.Counter

from collections import Counter

mylist1 = [1, 2, 4, 4]
mylist2 = [1, 3, 3, 3]

c1 = Counter(mylist1)
c2 = Counter(mylist2)

c1.most_common(1)
>>> [(4, 2)]

c1.most_common(1)[0][1] == 3
>>> False

c2.most_common(1)[0][1] == 3
>>> True

答案 5 :(得分:1)

检查最高计数?

max(map(mylist.count, mylist)) >= 3

答案 6 :(得分:0)

你可以试试这个:

if mylist.count(mylist[0])>=3 or mylist.count(mylist[1])>=3:
    print('3 are the same')

答案 7 :(得分:0)

您可以使用collections.Counter

from collections import Counter
same3 = Counter(mylist).most_common(1)[0][1] >= 3

如果至少 3个元素相同,则为真。