【发布时间】:2022-06-10 23:14:48
【问题描述】:
我已经写了一些代码,但它没有输出我所期望的。
代码如下:
query_words = ['probabilistic']
query_word_to_synonym_dict = {'probabilistic': ['probabilistic', 'algorithms']}
mail_ids = {83, 108}
big_ds = {}
empty_dict = {}
index = {'probabilistic':{(108, 1)}, 'algorithms':{(83, 1)}}
for query_word in query_words:
empty_dict.update({query_word:[]})
for mail_id in mail_ids:
big_ds.update({mail_id:empty_dict})
for query_word in query_words:
syns = query_word_to_synonym_dict[query_word]
for syn in syns:
index_of_word = index[syn]
tuple_first = []
for tuples in index_of_word:
tuple_first.append(tuples[0])
for number in tuple_first:
(big_ds[number][query_word]).append(syn)
print(big_ds)
big_ds 的预期最终值为:
{83: {'probabilistic': ['algorithms']}, 108: {'probabilistic': ['probabilistic']}}
但代码将big_ds 的值设置为:
{83: {'probabilistic': ['probabilistic', 'algorithms']}, 108: {'probabilistic': ['probabilistic', 'algorithms']}}
我试过调试,我知道错误与这一行有关:
(big_ds[number][query_word]).append(syn)
但我似乎无法弄清楚如何解决问题。有什么解决办法吗?
【问题讨论】:
-
big_ds.update({mail_id:empty_dict})使big_ds的每个值包含相同empty_dict对象,不是副本。
标签: python list dictionary