簡體   English   中英

如何遍歷字符串並查找重復的值

[英]How to iterate through a string and find the duplicated values

我的問題是,我似乎找不到正確的方法來遍歷subject2並挑選出重復的字符串。 下面是我的方法:

nosubjects = []
subjects2 = ["hi","hi","bi","ki","si","bi","li"]
for i in subjects2:
  if subjects2.count(i)==2:
    nosubjects.extend(i)
    print(nosubjects)

但是當我打印出來時,它看起來像這樣:

['hi','hi']
['h', 'i', 'h', 'i','b', 'i']
['hi', 'i', 'h', 'i', 'b', 'i', 'b', 'i']

請幫忙謝謝!

使用collections.Counter可以獲取每個元素的計數,並僅獲取計數超過1的元素:

from collections import Counter

subjects2 = ['hi', 'hi', 'bi', 'ki', 'si', 'bi', 'li']
nosubjects = [x for x, i in Counter(subjects2).items() if i > 1]

print(nosubjects)
# ['hi', 'bi']

您的代碼中的問題:

  • 您正在嘗試檢查列表中每個元素的計數,因為它將多次檢查重復的元素。
  • 您正在if條件內打印無nosubjects ,這將導致它多次打印

使用sets 首先獲取列表中唯一的元素集,然后可以檢查原始列表中集合中每個元素的計數是否超過1。

nosubjects = []
subjects2 = ['hi','hi','bi','ki','si','bi','li']

for i in set(subjects2):
  if subjects2.count(i)>=2:
    nosubjects.append(i)

print(nosubjects)

使用列表理解:

subjects2 = ['hi','hi','bi','ki','si','bi','li']

nosubjects = [i for i in set(subjects2) if subjects2.count(i) >=2]    
print(nosubjects)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM