有人可以告诉我如何解决我遇到的这个小代码问题。
我的代码:
dictionary = {}
word_pos_list = []
for unit, object in enumerate(words_list, start = 1):
if object in dictionary:
word_pos_list.append(dictionary[object])
else:
dictionary[object] = unit
word_pos_list.append(unit)
这是我遇到的问题。
将此作为变量的单词列表示例' words_list':['this', 'sentence', 'is', 'a', 'very', 'very', 'good', 'sentence']
我最终得到的结果是:[1, 2, 3, 4, 5, 5, 7, 2]
当在句子中再次找到一个单词时,字典中的值正确显示,如“'非常”一词所示。 (第5号)但我失去了下一个单位'值,在这个例子中它是第6号,因为你可以看到句子中的下一个唯一单词最终为7。
我该怎么做才能阻止这种情况发生?提前感谢您的时间和帮助。
答案 0 :(得分:1)
看起来你并没有真正寻找句子中单词的位置,enumerate
给你,但你有多少不同的单词到目前为止已见过。为此,您只需检查当前字典中的条目数。
dictionary = {}
word_pos_list = []
for word in sentence:
if word not in dictionary:
dictionary[word] = len(dictionary) + 1
word_pos_list.append(dictionary[word])
对于您的句子,word_pos_list
将为[1, 2, 3, 4, 5, 5, 6, 2]
答案 1 :(得分:0)
正如其中一条评论所述,似乎没有充分的理由在这里使用enumerate
。手动计算物品数据会更清晰。
words_list = ['this', 'sentence', 'is', 'a', 'very', 'very', 'good', 'sentence']
dictionary = {}
word_pos_list = []
counter = 0
for word in words_list:
if word not in dictionary:
counter += 1
dictionary[word] = counter
word_pos_list.append(dictionary[word])
print word_pos_list # [1, 2, 3, 4, 5, 5, 6, 2]