dict中的重复字符

2024-09-28 21:25:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了以下代码:

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")
black = blacklisted word
s = user writing it with numbers

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


Tags: inforifitemreplacelistblackprint
1条回答
网友
1楼 · 发布于 2024-09-28 21:25:13

这将为您带来好处:

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

import itertools

def repl(txt, pat):
    if(len(pat)==0):
        return txt
    return repl(txt.replace("1", pat[0], 1), pat[1:])

black = "Ellie"
s = "E111e"
messagelist = list(s)
a = s.count("1")
dicta = {}

listo = ['l', 'i', 'j',]
result = itertools.combinations_with_replacement(listo, a)
lista2 = []
for each in result:
    lista2.append("".join(each))
lista3 = []
for x in lista2:
        listexa = repl(s, x)
        lista3.append(listexa)
print(lista3)
if black in lista3:
    print("DELETE")
else:
    print("IT'S OKAY")

考虑函数^ {< CD2>} -最重要的改进。它本质上利用了python{}也可以接受第三个参数这一事实,这本质上定义了要进行的替换的数量-只是一次替换一个

相关问题 更多 >