我有以下Python list
:
mylist = [a, b, c, d]
其中a,b,c,d
为integers
。
我想比较4
个数字,看看它们中的3
是否相同。
我尝试将list
转换为set
,但这对我没有帮助。
答案 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个元素相同,则为真。