Python dict中的重复字符

Python dict中的重复字符,python,combinations,Python,Combinations,我做了以下代码: import itertools black = "Ellie" s = "E111e" messagelist = list(s) a = s.count("1") dicta = {} for x in messagelist: if not x == "1": dicta[x] = messagelist.index(x) print(dicta) li

我做了以下代码:

import itertools
black = "Ellie"
s = "E111e"
messagelist = list(s)
a = s.count("1")
dicta = {}
for x in messagelist:
    if not x == "1":
        dicta[x] = messagelist.index(x)
        print(dicta)
listo = ['l', 'i', 'j',]
result = itertools.combinations_with_replacement(listo, a)
lista2 = []
for each in result:
    a =str(each).replace("(", "")
    a = a.replace(")", "")
    a = a.replace(",", "")
    a = a.replace("'", "")
    a = a.replace(" ", "")
    lista2.append(a)
lista3 = []
for x in lista2:
        listexa = list(x)
        for item in dicta:
            listexa.insert(dicta[item], item)
        listexa = "".join(listexa)
        lista3.append(listexa)
print(lista3)
if black in lista3:
    print("DELETE")
else:
    print("IT'S OKAY")

问题在于包含多个相等字符的单词,如“finishing”有2个“n”字符,因此在dict中,只会添加1个“n”,如何解决此问题?

这将为您提供解决方法:

(我还调整了循环的,在循环中迭代组合-只是为了保持pythonish;)

导入itertools
def repl(txt,pat):
如果(len(pat)==0):
返回文本
返回repl(txt.replace(“1”,pat[0],1),pat[1:])
black=“Ellie”
s=“E111e”
messagelist=列表
a=s.计数(“1”)
格言={}
listo=['l','i','j',]
结果=itertools.带替换的组合(列表,a)
列表A2=[]
对于每个结果:
lista2.append(“.join(每个))
列表A3=[]
对于列表A2中的x:
listexa=repl(s,x)
lista3.append(listexa)
打印(列表A3)
如果列表A3中为黑色:
打印(“删除”)
其他:
打印(“没关系”)

考虑函数
repl
——最重要的改进。它本质上利用了一个事实,即
python
str.replace()
也可以接受第三个参数,本质上,它定义了要进行的替换的数量-一次替换一个。

与其在dict中为发生的每个字母放置一个索引,您可以尝试使用索引列表并将当前索引附加到末尾。我不理解您的问题。
black = blacklisted word
s = user writing it with numbers