使用python 3.x在单词中查找重复的字符

时间:2018-06-12 01:04:25

标签: python-3.x

我正在尝试编写一个代码,使用python 3.x在单词中查找重复的字符。

例如,

"abcde" -> 0 # no characters repeats more than once
"aabbcde" -> 2 # 'a' and 'b'
"aabBcde" -> 2 # 'a' occurs twice and 'b' twice (bandB)
"indivisibility" -> 1 # 'i' occurs six times

这是我到目前为止的代码,

def duplicate_count(text):
    my_list=list(text)
    final=[]
    for i in my_list:
        if i in final:
            return(len(final[i]))


        else:
            return(0)

我希望增加我的python技能,所以我想了解它出了什么问题以及原因。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不明白你的代码应该做什么:你永远不会在finalreturn中添加任何内容。

以下解决方案在输入上迭代时保留两个set。一个是我们见过的每一个角色,另一个是不止一次出现的每个角色。我们使用set s因为它们具有非常快速的成员资格检查,并且因为当您尝试将项目添加到已包含该项目的set时,没有任何反应:

def duplicate_count(text):
    seen = set()
    more_than_one = set()
    for letter in text:
        if letter in seen:
            more_than_one.add(letter)
        else:
            seen.add(letter)
    return len(more_than_one)

答案 1 :(得分:0)

  

我希望增加我的python技能,所以我想了解它出了什么问题以及原因。

     

有什么想法吗?

嗯,首先,既然你从未真正把任何东西放在“最后”中,你将永远不会有“i”在“最终”中的情况......

这是一个可以做你想要的功能:

def do_stuff(test_str):
    my_list=list(test_str)
    my_dict={}
    count=0
    for i in my_list:
        if i in my_dict:
            my_dict[i]+=1
        else:
            my_dict[i]=1
    for k in my_dict:
        if my_dict[k]>1:
            count+=1
    return count

这个功能可以改进(由你)。