我正在尝试在列表中查找出现奇数次的整数。下面是我要实现的解决方案,但得到以下信息: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]
答案 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]