检查列表以查找其当前引用值的另一个实例

时间:2015-11-18 03:24:19

标签: python

{{1}}

尝试检查列表是否包含重复项,因此我尝试将当前值与包含它的列表进行比较,减去该值。即使一个项目只在列表中一次,它仍然会被捕获,这使我成为了一个东西。删除它并没有做我认为它正在做的事情。

3 个答案:

答案 0 :(得分:1)

为什么不用.count()来检查重复项?

wheels = [wheel_1,wheel_2,wheel_3,wheel_4,wheel_5]

for wheel in wheels:
    if wheels.count(wheel) > 1:
        print("duplicate")

答案 1 :(得分:1)

当你循环迭代车轮(列表元素)在车轮.. 假设它在第一次迭代中需要wheel_1。 然后你要检查wheel_1是否在车轮上。 轮子在哪里[wheels_1,wheels_2,.....] 因此,当轮子存在时,它会被移除。 因此列表变为[wheel_2,wheel_2,.....] 每个元素都会发生这种情况,因此您最终得到一个空列表 list.remove(list_item)正在这里工作。

你的逻辑错误。

您要做的是设置一个计数器,如果列表中存在多个list元素,则删除该元素。

你也应该在python中引用“set”。 这是一个没有重复的列表。

答案 2 :(得分:1)

如果您只想检查是否存在重复,则可以使用set。 set包含唯一元素。所以,逻辑很简单,如果列表的长度等于集合的长度,那么你没有重复。

if len(wheels)==len(set(wheels)):
    print "No duplicate"
else:
    print "Duplicate exists"  

但是,如果您对这些重复元素是什么感兴趣,可以考虑itertools.Counter,它返回一个字典,其中包含一个iterable元素作为键的关键字和频率作为值。

from collections import Counter
c = Counter(a)
for key,value in c.iteritems():
    if value>1:
        print key," exists ",value, " times "