使用计数器作为条件

Using counter as condition

我正在尝试根据变量的出现次数做一个条件。 如果任何变量出现不止一次,它将显示为错误;如果每个变量出现一次,则它只会显示为正确。我试过这个但没有用:

from collections import Counter
z = ['blue', 'red', 'yellow']
Counter(z)
print(Counter(z))

if Counter(z).items() != 1:
    print('Wrong')
else:
    print('Right')

实现此目的的最简单方法是使用 all 而不是 counter.values()(包含所有计数):

from collections import Counter

right_counter = Counter([1, 2])

if all(count == 1 for count in right_counter.values()):
    print('right')
else:
    print('wrong')

wrong_counter = Counter([1, 1, 2])

if all(count == 1 for count in wrong_counter.values()):
    print('right')
else:
    print('wrong')

产出

right
wrong

或者,您可以确保列表的长度等于列表集合的长度:

right_list = [1, 2]
wrong_list = [1, 1, 2]

if len(right_list) == len(set(right_list)):
    print('right')
else:
    print('wrong')

if len(wrong_list) == len(set(wrong_list)):
    print('right')
else:
    print('wrong')

也输出

right
wrong

只需使用all 来检查单次出现的条件。 如果 value 为 1,则它将 True 附加到列表中,否则 False

all 检查列表中的所有元素是否为 True,

from collections import Counter
z = ['blue', 'red', 'red','yellow']
dic = Counter(z)

if all(value == 1 for key, value in dic.items()):
    print('Right')
else:
    print('Wrong')