我有一个通过输入语句创建的单词列表: phrase = input(Please enter a phrase:) 我的名字是我的名字是
phrase.split()
Phrase = ["My", "Name", "Is", "My", "Name", "Is"]
然后,我通过枚举短语列表并附加用于创建原始短语的所有单词,创建了一个 UsedWords 列表(见下文)。
WordsUsed = ["My","Name","Is"]
indexOfWords=[0 1 2 ]
然后我使用内置方法将每个字母的索引(在 WordsUsed 列表中)存储到一个名为 indexOfWords 的新列表中。
因此,我现在要做的是在短语列表中重新创建原始短语,但将其替换为 WordsUsed 列表中单词的索引。例如:
Phrase = ["My", "Name", "Is", "My", "Name", "Is"]
WordsUsed = ["My","Name","Is"]
NewPhrase = [0, 1, 2, 0, 1, 2]
我已经按照 Kasra 的建议尝试了以下方法:
d={j:i for i,j in enumerate(set(Phrase))}
[d[i] for i in Phrase]
然而,这会返回该短语的以下输出: Phrase = ["My", "Name", "Is", "My", "Name", "Is"] 输出 [2, 1, 0, 2, 1, 0] 我相信它正在按字典顺序输出列表。实际输出应该是 [0, 1, 2, 0, 1, 2]
有没有人知道如何克服这个问题。
干杯
最佳答案
尝试:
[WordsUsed.index(word) for word in Phrase]
它给你什么
给定 ["My", "Name", "Is", "My", "Name", "Is"]
你会得到 [0, 1, 2, 0, 1, 2]
。
给定 ["My", "Name", "My", "My", "Name"]
你会得到 [0, 1, 0, 0, 1]
。
希望这是更具可读性和简洁的答案。
关于python - 单词的引用列表位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30800584/