请求一点帮助。 此函数用标准拼写替换缩写词。我试着用列表替换第3-6行。我试过这个:
words[i] = [key for i, word in enumerate(words) for key, value in abbrevs.items()
if word == abbrevs[key]]
def text_deciphered(text_message, abbrevs):
words = text_message.split()
for i, word in enumerate(words):
for key in abbrevs.keys():
if word == abbrevs[key]:
words[i] = key
words = ' '.join(words)
return words
text_message = "Hey, wat r our plans for tn"
abbrevs = {"what": "wat", "are": "r", "tonight": "tn"}
print(text_deciphered(text_message, abbrevs))
但它只返回abbrevs中的键-今晚是什么
首先,字典背后的思想是基于键查找值,而不是相反。这保证了即时查找,而不是像您正在做的那样转储所有条目并逐个查找它们。从反转dict:
abbrevs = {v: k for k, v in abbrevs.items()}
开始,或者在继续之前从一开始就正确地构建它调整之后,可以使用列表理解和^{} 实现简单的一行程序。如果
element
不在字典中,则回退值为element
本身:因此,您的功能是:
请注意
split
相当于\s+
,因此您可能会无意中压缩空白。我更愿意将re.sub
与lambda一起应用于每个单词:相关问题 更多 >
编程相关推荐