python - 单词的引用列表位置

标签 python

我有一个通过输入语句创建的单词列表: 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/

相关文章:

python - 匹配两个numpy数组以找到相同的元素

python - 如何从数据集在 pandas 中创建标题和列?

python - 在Python中读取2字节的I2C事务

c++ - Cython vector 操作

python - "Move"IntelliJ 中的重构不适用于输入

python - Django 模板中的 URL 问题

python - 如何将多个视频合并为一个视频并使用Python设置它们的位置

python - 属性错误 : 'module' object has no attribute 'Datefield'

python - 如何将一个 DataFrame 列转换为包含基于另一个 DataFrame 的列的真值表?

python - 如何从.cpp调用.py GUI?