python字典操作问题

发布网友 发布时间:2022-04-20 13:52

我来回答

1个回答

热心网友 时间:2022-04-07 09:47

应为在python中dict是可变对象。用dic1赋值给dic3后,并没有创建一个新的对象,dic3和dic1指向同一个对象。通过dic3改变其内容,就如同通过dic1改变对象内容一样。

具体的内容你可以看看深拷贝和浅拷贝

import copy
def com_weight(dic1,dic2):
    dic3 = copy.deepcopy(dic1)  #深拷贝,,,,
    for i in dic1.keys():
        for j in dic1[i].keys():
            dic3[i][j]=dic1[i][j]-dic2[i][j]
        
    print dic3

if __name__=='__main__':
   
    dic1 = {1: {1: 142264, 2: 142315}, 2: {3: 142111}, 3: {3: 142723}}
    dic2 = {1: {1: 142263, 2: 142312}, 2: {3: 142110}, 3: {3: 142722}}       
        
    print '__________________'
    print dic1
    print dic2
    print '*******************'
    com_weight(dic1, dic2)
    print '~~~~~~~~~~~~~~~~~~~~~~~~'
    print dic1
    print dic2

追问

明白了,朋友,用深拷贝,我把代码改了下,可以了,非常感谢!

    声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
    E-MAIL:11247931@qq.com