Python 3.x 我所写的代码在包含四个元素的列表中运行良好,但当列表的长度增加时,它不会给出正确的答案

Python 3.x 我所写的代码在包含四个元素的列表中运行良好,但当列表的长度增加时,它不会给出正确的答案,python-3.x,Python 3.x,我正试图为一个问题编写一个python代码,在这个问题中,我将得到一个字符串列表,例如[a,B,B,C],我应该得到的输出是B,如果有多个重复值,重复次数相等,或者列表中没有元素,那么它应该不作为输出。到目前为止,我的代码做得很好,但是当列表的大小增加时,我的代码给出了错误的输出,请帮助我优化代码,以便它获得任何大小的列表并给出正确的输出 lis = ["A","B","B","A"] #INPUT LIST catch = [] final_catch=[]

我正试图为一个问题编写一个python代码,在这个问题中,我将得到一个字符串列表,例如[a,B,B,C],我应该得到的输出是B,如果有多个重复值,重复次数相等,或者列表中没有元素,那么它应该不作为输出。到目前为止,我的代码做得很好,但是当列表的大小增加时,我的代码给出了错误的输出,请帮助我优化代码,以便它获得任何大小的列表并给出正确的输出

    lis = ["A","B","B","A"]   #INPUT LIST
    catch = []
    final_catch=[]
    for i in range(len(lis)):
        for j in range(i + 1, len(lis)):
            if lis[i] == lis[j]:
                catch.append(lis[i])


    final_catch =list(set(catch))
    print(final_catch)
    if len(final_catch)>=2 or len(final_catch) == 0:
        print("NONE")
    else:
        print(final_catch.pop())

for input ["A,"B","B","A"] expected output:"NONE" actual output: "NONE"
for input ["A","A","A","A"] expected output :"A" actual output : "A"
for input ["A","A","B","B","A","B","A","B","B"] expected output : "B"
试试这个

>>> from collections import Counter
>>> l = ["A","A","B","B","A","B","A","B","B"]
>>> d = Counter(l)
>>> result = d.most_common() # result looks like [('B', 5), ('A', 4)]
输出:

说明:

用于获取列表中每个元素的出现次数

用于以元组的形式获取大多数出现的列表,例如,[元素,出现的数量]

返回n个最常见元素及其计数的列表 最普通的

结果[0][0]-我们正在传递索引值以获取列表中元组的第一个元素

结果[0][1]-这将提供列表中元组的第二个元素


*结果[0]-选择列表中的第一个元素

您的描述不一致。在输入[A,A,B,B,A,B,A,B]中有不止一个重复值,您首先说它应该将None作为输出,然后是预期的输出:B。如果您可以对代码进行注释以解释它在做什么,对许多人会有什么帮助。尤其是lambda,因为读者可能无法100%了解它。此外,您可以使用result=d。大多数情况下,不需要排序或lambda@EdwinvanMierlo谢谢你的建议。我已经解释过了。
>>> result[0][0] if result[0][1] >2 else 'None' # conditional if-else statement
'B'