我有一个包含
的文本文件"尽量不要成为一个成功的人,而是努力成为一个有价值的人。 深入了解自然,然后你会更好地理解一切。 智力的真正标志不是知识,而是想象力。 我们不能用我们在创建它们时使用的相同思维来解决我们的问题。 态度的弱点成为品格的弱点。 你不能因为坠入爱情而责怪引力。 愚蠢和天才之间的区别在于天才有其局限性。"
我正在尝试将单词作为键放入字典中,并使用它们所在的行号来表示值。
这是我的代码,我不知道它为什么不起作用
dictionary = dict()
i = 0
for line in fp:
for word in line.lower().split():
if word in dictionary:
dictionary[word].append(i)
else:
dictionary[word] = i
i = i + 1
答案 0 :(得分:1)
这是更正:
else:
dictionary[word] = [i]
答案 1 :(得分:1)
第一次将单词作为键插入时,其值必须是列表,而不是整数,以便下次找到相同的单词时可以附加到列表中。但是你不能附加到int。
所以这里是固定代码:
dictionary = dict()
i = 0
for line in fp:
for word in line.lower().split():
if word in dictionary:
dictionary[word].append(i)
else:
dictionary[word] = [i]
i = i + 1
更简洁的方法是使用默认值为列表的默认dict。
from collections import defaultdict
dictionary = defaultdict(list)
for i,line in enumerate(fp):
for word in line.lower().split():
dictionary[word].append(i)
答案 2 :(得分:0)
我认为这里的一般问题是字典键必须是唯一的...句子中有多少单词重复至少2x?
重复单词列表: (尝试,不是,成为,成为,成为,男人,但是,而且,你,我们,是,我们,弱点,天才)
然后还有像"可以'#34;将分为" can"和" t" (你想不处理?)
您要求的示例:
拥有2x密钥:'try': 1