检测数字中的重复项(Python)

我目前正在开展一个小项目,该项目涉及分析选票并根据他们收到的选票数量确定获胜候选人。投票系统很不寻常。例如,如果有四名候选人,投票可能如下所示:2341(第一个候选人为 2,第二个候选人为 3,等等)。但是,如果投票看起来像这样:2334 则无效,同一号码不能在投票中使用两次。我想知道是否有办法检查数字中的重复数字。我已经有了一个解决方案,但是它不适用于我的所有测试用例。

当前代码:

voteListString = ['2314', '4432', '4312', '1243', '1234', '2431'] # 4432 should get removed (it doesn't)
for i, voteString in enumerate(voteListString):
        newI = i+1
        duplicateCheck = voteString.count(f"{newI}")
        if duplicateCheck > 1:
            voteInt = int(voteString)
            voteList.remove(f"{voteInt}")
            spoiltBallots += 1
        else:
            validVoteList.append(voteString)

上面的代码是一个 for 循环,它循环遍历已转换为字符串的投票列表。然后计算“i”在投票中出现的次数,如果出现不止一次,它将从列表中删除。这仅适用于我的一个测试用例。如果有更好的方法来做到这一点,我将非常感谢您的帮助。提前致谢。

回答

set

def is_valid(vote):
    return len(set(vote)) == len(vote)

print(is_valid('4432')) # False
print(is_valid('1234')) # True

voteListString = ['2314', '4432', '4312', '1243', '1234', '2431']

new_vote_list_string = list(filter(is_valid, voteListString))

print(new_vote_list_string)
['2314', '4312', '1243', '1234', '2431']


以上是检测数字中的重复项(Python)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>