如何创建一个对象来存储从词汇表中的单词到其索引的映射?

How to create an object which stores mappings from a word in a vocabulary to its index?

我有一个词汇表中的单词标记列表。 (已通过一组,因此没有重复。)

我的问题

我想生成一个方法来创建一个字典,允许从单词到它在词汇表中的索引的映射。

我的尝试

我现在的方法是这样的:

mapping = { w : vocabulary.index(w) for w in vocabulary }

这应该可行,但效率太低,可能是由于对数千个单词重复使用 vocabulary.index(w)。

问题

是否有我可以使用的库可以更有效地执行此操作?或者只是更有效的方法?

谢谢。

可能的解决方案 1

目前,每次到达'vocabulary'中的单词时,都会执行vocabulary.index(),这需要通过'vocabulary'来识别索引,这是为每个单词。正如答案中所建议的,一种可能性是先枚举 'vocabulary' 。这允许通过它来识别索引,如下所示:

mapping = { w : i for i, w in enumerate(vocabulary) }

尝试按如下方式更改您的代码。 mapping = { w : i for i, w in enumerate(vocabulary) } 其中 i 是单词 w.

的索引