【问题标题】:How do I resolve this unexpected output in Python code?如何解决 Python 代码中的这种意外输出?
【发布时间】: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


猜你喜欢
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 2016-02-15
  • 2016-11-14
  • 1970-01-01
  • 2022-11-25
  • 2015-05-09
  • 1970-01-01
相关资源
最近更新 更多