繁体   English   中英

我怎样才能遍历一个列表并检查一个相等的项目是否包含在那里?

[英]How i can i traverse a list and check if an equal item contains there?

我想要求用户输入一个字符串列表,例如: ["i", "love you", "so much", "so much"] 并检查是否包含相等的字符串并打印出现最多的字符串按升序排列。 我想知道如何使用 map 或两个 foor 循环来做到这一点。

我尝试使用一个 foo 循环但效率低下,因为我不能以另一种方式做到这一点。 我需要使用 2 foor lops 或 map 来做到这一点,但我不知道如何实现逻辑。 谁能帮我? 谢谢

您可以为此使用一组。 集合不能有重复的元素,因此如果将列表转换为集合并且列表的大小缩小,则存在重复元素。 但是,这仅在您不关心复制了哪个元素时才有效。

例如:

strings = ["i", "love you" , "so much", "so much"]
if len(strings) == len(set(strings)):
    print("No duplicates")
else:
    print("There was some duplicate")

编辑:

为了解决您的评论:

有没有办法我也可以打印这些元素出现在列表中的频率? 因为这样我现在只能在有重复但不是哪个重复的情况下才能做到。 例如我想打印:“这么多”、“我”、“爱你”。

是的。 您可以为此使用Counter

from collections import Counter
strings = ["i", "love you" , "so much", "so much"]
counted = Counter(strings)
print(counted)

哪个输出

Counter({'so much': 2, 'i': 1, 'love you': 1})

您可以在没有额外数据结构的情况下执行此操作:对列表进行排序并扫描它(单循环)以检查是否有相等的连续元素。 您还可以计算重复项或删除它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM