【问题标题】:Is there a way to check for duplicates in a list?有没有办法检查列表中的重复项?
【发布时间】:2019-12-05 15:02:26
【问题描述】:

我有一个需要创建的程序,其中一项任务是让用户在一周中的每一天(周一至周五)输入 5 个数字(整数)。对于这 5 个数字,我需要确定用户是否输入了任何重复项,并使用包含字符串和整数的单个列表显示哪两天是重复项,最后显示它们。我是编程新手,非常感谢您的帮助!

使用 python 3.x

谢谢!

【问题讨论】:

  • check for duplicates in a list以来有什么进展吗?
  • 没有我希望的那么多,我一次又一次地尝试和失败只是为了更可悲地搞砸程序,但至少我在学习!
  • 您能分享您目前的情况或概述您遇到的具体问题吗?
  • 你看过列表的方法吗?如果是这样,您是否尝试过使用它们中的任何一个? docs.python.org/3.7/tutorial/datastructures.html

标签: python python-3.x list python-3.7


【解决方案1】:

您可以使用字典来跟踪每个数字的日期。请参阅以下示例:

days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

# get numbers
numbers = dict()
for day in days:
    n = input(f'enter number for day {day}: ')
    if n in numbers:
        numbers[n].append(day)
    else:
        numbers[n] = [day]

# find duplicates
for n, ds in numbers.items():
    if len(ds) > 1:
        print(f'duplicate number {n} for days', *ds)

【讨论】:

  • 谢谢 Diego 真的很感激!
【解决方案2】:

这个带有收集模块 :) 对于大列表更好。 ... .

from collections import Counter
z = ['Mo', 'Mo', 'Tue', 'w',  2, 3, 3 ]
T= Counter(z)

for element in z:
    if T[element]>1:
        print ( "dup:" ,element, "occ:" ,T[element])

【讨论】:

  • 感谢 Remus 的时间和知识!
【解决方案3】:

以下代码检查列表中的重复项并返回重复项。

def checkDuplicate(lst):
    duplicateList=set()

    for i,x in enumerate(lst,start=1):
        for y in lst[i:]:
            if x==y:
                duplicateList.add(x)
    print(duplicateList)
    return duplicateList

if __name__ == "__main__":
    lst=[1,2,2,4,4]
    result=checkDuplicate(lst)
    days={1:'Mon', 2:'Tue', 3:'Wed', 4:'Thu', 5:'Fri'}
    for v in result:
        print(days[v])

如果你运行上面的代码,你会得到结果(在这个列表示例中):

{2, 4}
Tue
Thu

【讨论】:

  • 感谢 Kardi 真的帮助了我!
猜你喜欢
  • 2017-01-22
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
相关资源
最近更新 更多