我想将文本文件中的每个单词添加到字典中,该怎么做?
(我有一个文件'words.txt',我已经打开并读取了文件,单词列表在下面的变量“ lines”中)
d = {}
for i in lines:
for word in i.split():
d[???] = word
我将什么代码放在“ ???”位置是吗?
我基本上希望字典看起来像这样:
{0: firstword, 1: secondword, 2: thirdword, 3: fourthword...}
我认为获取列表中每个单词的索引位置是可行的,但是我不确定如何做到这一点。
这似乎并不复杂,但是我被困住了。
答案 0 :(得分:1)
假设您有一个变量words
,其中包含单词列表['firstword', 'secondword', 'thirdword', 'fourthword']
因此您的代码应为:
d = {}
for k, v in enumerate(words):
d[k] = v
答案 1 :(得分:1)
您可以在单独的变量c
中跟踪“当前索引”,并将其用作字典中单词的值:
d = {}
c = 0
for i in lines:
for word in i.split():
d[word] = c
c += 1
请注意,此处的词典将存储重复单词的最高索引。
答案 2 :(得分:1)
每行都将覆盖字典中的前一行。但是您可以像这样解决此问题:
d = {}
k = 0
for i in lines:
for word in i.split():
d[str(k)] = word
k = k + 1
为什么要为此使用字典?当字典与具有含义的键一起使用时,字典很有用。您本可以使用此任务的列表。
此外,您可以通过预分配列表然后使用算法填充列表来提高性能。
答案 3 :(得分:1)
有很多答案质疑为什么,您需要这样做是有效的,但是我将尝试回答直接的问题。另外,我认为处理重复项很有必要。较低的索引(第一次看到单词)优先...这是我的假设,但考虑到您的问题是有道理的。
?
现在您有了字典词:具有唯一词+索引的索引
答案 4 :(得分:1)
首先打开一个文件并写一些行。
mydata = pd.read_csv(file, na_values='?')
out = mydata.isnull().sum()
以您期望的方式枚举单词。如果您使用生成器表达式,则它对dict理解非常有效。
fname = 'textfile.txt'
with open(fname, 'w') as textfile:
textfile.write('zero one two three four five\n')
textfile.write('six seven eight nine ten')
这产生了
word_positions = {}
with open(fname, 'r') as textfile:
words = (word for line in textfile.readlines() for word in line.split())
word_positions = {i: word for i, word in enumerate(words)}