共享同一实例的不同词典

2024-09-30 10:37:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个程序中有7个字典,它们的数据是用ETREE获取的,问题是python没有为输出中显示的每个dict创建单独的dict实例,每当我打印这些dict中的任何一个时,我都会得到相同的输出,这是一个包含所有数据的联合的大字典。你知道吗

 tr_dict,tr_text,exp_dict,exp_text,top_dict,top_text,times=[{}]*7 #create n empty dictionaries
    for tr in transcript:
        trtext = tr.find('TATION/ANNOTATION_VALUE').text
        tr_time_ref = tr.find('TATION').attrib['TIME_SLOT_REF1']
        tr_ann_ref = tr.find('ATION').attrib['ANNOTATION_ID']

        tr_dict[tr_ann_ref] =  tr_time_ref
        tr_text[tr_time_ref]=trtext

...

输出:

[Dbg]>>> exp_dict is exp_text
True
[Dbg]>>> tr_dict is tr_text
True
[Dbg]>>> tr_dict is exp_dict
True

当然,我不希望发生这种情况,我希望python为每个dict创建并使用一个单独的dict。你知道吗


Tags: 数据textreftruetimeistopannotation
1条回答
网友
1楼 · 发布于 2024-09-30 10:37:55

问题是:

[{}] * 7

请改为:

[{}, {}, {}, {}, {}, {}, {}]

说明:第一行将创建一个字典并在列表中复制对它的七个引用,而第二行创建七个不同的字典-这就是您要做的。或者,如评论中所述,这也适用于:

[{} for _ in range(7)]

相关问题 更多 >

    热门问题