我的列表理解不正确吗?

时间:2018-07-11 15:51:22

标签: python-3.x

我正在尝试在列表中查找出现奇数次的整数。下面是我要实现的解决方案,但得到以下信息:TypeError:类型'int'的参数不可迭代

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

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]

1 个答案:

答案 0 :(得分:5)

对象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]