我在一个愚蠢的问题上工作了一个多小时,但我找不出解决方案。 我使用初始列表创建一个defaultdict(list),并通过for循环更新这些列表。 但是,每次我更新一个值时,所有其他值都会更新为相同的值。 有人可以帮我吗? 这里是我的代码:Python:defaultdict每个值更新
from collections import defaultdict
base = ["coucou", "salut", "tchao"]
initial_vector = [0]*len(base)
dict_vectorized_documents = defaultdict(lambda: initial_vector)
inversed_index = {"coucou": [(1, 3), (100, 4)], "salut": [(1, 1), (99, 2), (33, 3)], "tchao": [(1, 5)]}
for i, word in enumerate(base):
print(word)
for element in inversed_index[word]:
print(element[0])
print(i)
print(element[1])
print(dict_vectorized_documents[element[0]][i])
dict_vectorized_documents[element[0]][i] = element[1]
print(dict_vectorized_documents)
print(dict_vectorized_documents)
这里是我的日志当我运行它:
coucou
1
0
3
0
defaultdict(<function <lambda> at 0x7fcc5fac1f28>, {1: [3, 0, 0]})
100
0
4
3
defaultdict(<function <lambda> at 0x7fcc5fac1f28>, {1: [4, 0, 0], 100: [4, 0, 0]})
salut
1
1
1
0
defaultdict(<function <lambda> at 0x7fcc5fac1f28>, {1: [4, 1, 0], 100: [4, 1, 0]})
99
1
2
1
defaultdict(<function <lambda> at 0x7fcc5fac1f28>, {1: [4, 2, 0], 99: [4, 2, 0], 100: [4, 2, 0]})
33
1
3
2
defaultdict(<function <lambda> at 0x7fcc5fac1f28>, {1: [4, 3, 0], 99: [4, 3, 0], 100: [4, 3, 0], 33: [4, 3, 0]})
tchao
1
2
5
0
非常感谢您!
非常感谢您! :d – guillaumegg10