Python 3.x 我的理解不正确吗?

Python 3.x 我的理解不正确吗?,python-3.x,Python 3.x,我试图在一个出现奇数次的列表中找到一个整数。下面是我试图实现的解决方案,但我得到了以下结果:TypeError:int类型的参数不可iterable 我不明白为什么我的列表理解没有返回任何内容。如果我理解了错误,那么在某个我看不到的地方正在进行迭代 from collections import Counter def find_it(seq): new_seq = Counter() odd_appearances = None for i in seq:

我试图在一个出现奇数次的列表中找到一个整数。下面是我试图实现的解决方案,但我得到了以下结果:TypeError:int类型的参数不可iterable

我不明白为什么我的列表理解没有返回任何内容。如果我理解了错误,那么在某个我看不到的地方正在进行迭代

from collections import Counter

def find_it(seq):
    new_seq = Counter()
    odd_appearances = None
    for i in seq:
        new_seq[i] += 1
    for v in new_seq.values():
        if v % 2 == 1:
            odd_appearances = v
    return [k for k, v in new_seq.items() if odd_appearances in v]

对象
v
作为
new_seq
计数器的值,是一个整数。这句话:

odd_appearances in v
尝试迭代
v
以检查成员身份,正如您所注意到的,类型为“int”的参数是不可编辑的。这就是列表理解中有问题的部分。使用
collections.Counter类的一种更具python风格的方法如下:

def find_it(seq):
    new_seq = Counter(seq)
    return [k for k, v in new_seq.items() if v % 2 == 1]

对象
v
作为
new_seq
计数器的值,是一个整数。这句话:

odd_appearances in v
尝试迭代
v
以检查成员身份,正如您所注意到的,类型为“int”的参数是不可编辑的。这就是列表理解中有问题的部分。使用
collections.Counter类的一种更具python风格的方法如下:

def find_it(seq):
    new_seq = Counter(seq)
    return [k for k, v in new_seq.items() if v % 2 == 1]