В вашем решении вы преформуете медленно line.split()
для каждого слова, дважды.Рассмотрим следующую модификацию:
with open("googlenews.word2vec.300d.txt") as g_file:
i = 0;
#dict of words: [lots of floats]
google_words = {}
for line in g_file:
word, *numbers = line.split()
google_words[word] = [float(number) for number in numbers]
Одна из продвинутых концепций, которую я здесь использовал, это «распаковка»: word, *numbers = line.split()
Python позволяет распаковывать итерируемые значения в несколько переменных:
a, b, c = [1, 2, 3]
# This is practically equivalent to
a = 1
b = 2
c = 3
*
- это сокращение от "взять остатки, поместить их в list
и присвоить списку имя":
a, *rest = [1, 2, 3, 4]
# results in
a == 1
rest == [2, 3, 4]