不,这不像使用count()
我有一个从0到9的5个随机整数的列表。我想检查这些整数中的3个是否相同,是否其余2个相同但与其他3个不同。
我的想法是使用set()
来计算列表中存在的出现次数,但这还包括存在4个相同的整数和1个孤立的整数的情况,例如:
nums = [4, 4, 4, 2, 2]
if len(set(nums)) == 2:
print(set(nums))
>> {4, 2}
nums = [4, 4, 4, 4, 2]
if len(set(nums)) == 2:
print(set(nums))
>> {4, 2}
我一直试图找到一种方法来排除4x1的情况,但是我想出的一切似乎都是令人费解的,并且是一种不道德的做法,因此需要保持清洁。我想知道是否可能有更好的方法而不使用set()?
感谢您的帮助。
答案 0 :(得分:5)
您可以使用以数字作为键,以值作为频率的字典
from collections import Counter
nums = [4, 4, 4, 2, 2]
freq_dict = dict(Counter(nums))
print(freq_dict)
会给你这个:
{4: 3, 2: 2}
,然后我们可以检查字典的长度为2的条件,否则意味着它有两个以上相同的元素。
if len(freq_dict) == 2:
for key, value in freq_dict.items():
if value == 2 or value == 3:
print("Given that there are 5 items and the length of the list is 2, it has to be the case that \
the other integer appears {} times".format(5 - value))
print(key)
break
else:
print("Nope")