Python 合并两个词典而不覆盖嵌套词典中的值

Python 合并两个词典而不覆盖嵌套词典中的值,python,dictionary,nested,mergeddictionaries,Python,Dictionary,Nested,Mergeddictionaries,我试图用循环中的每个新字典更新主字典,但每次它都会覆盖嵌套字典中的值。 我的意思是我想要这样的smth: {'Barbour': {1900: 73041, 1910: 895427, 1920: 1531624, 1930: 1617086, 1940: 1420561, 1950: 1853223, 1960: 3092728, 1970: 3505193, 1980: 3659797, 1990: 2575561, 2000: 743757, 2010: 173

我试图用循环中的每个新字典更新主字典,但每次它都会覆盖嵌套字典中的值。 我的意思是我想要这样的smth:

{'Barbour': {1900: 73041, 1910: 895427, 1920: 1531624, 1930: 1617086, 1940: 1420561, 1950: 1853223, 
             1960: 3092728, 1970: 3505193, 1980: 3659797, 1990: 2575561, 2000: 743757, 2010: 1730711}, 
'Berkeley': {1900: 0, 1910: 0, 1920: 0, 1930: 0, 1940: 0, 1950: 0, 1960: 0, 1970: 0, 1980: 0, 1990: 
          0, 2000: 0, 2010: 0}} 
(适用于所有城市)


[编辑]:问题是您必须将
移动到第一个循环,并始终将其设置为en empty dictionary,否则您将始终覆盖您所经历的值

def进程文件内容():
lst=读取文件内容煤炭()
dic={}
煤_dic={}
ycdic={}
对于lst中的stringdata:
yearcoaldic={}
city_data=stringdata.strip().split(','))
年份=1900
对于范围(1,13)内的j:
ycdic={year:int(城市数据[j])}
年份+=10
年报更新(ycdic)
#dic={city_data[0]:yearcoaldic}
dic[city_data[0]]=yearcoaldic
#煤炭工业信息更新(dic)
#印刷品(煤炭)
返回dic

当我这样尝试时,每个城市都得到了最后添加的城市的值;/这与我以前的代码有相同的问题。不管怎样,谢谢你的帮助,我的意思是在最后,当程序执行时,每个城市都有嵌套的字典,里面有年份ofc,这些年份对每个城市都有相同的值,我添加的上一个城市的值相同。每个城市都有这个开始{1900:01910:01920:1270782,我的错,纠正了这个问题,你总是将
yearcoaldic
初始化为一个空字典,否则你总是会按照你的经验重写它哦,是的,完美地按照我的意愿工作
def read_file_contents_coal():
    return ['Barbour,73041,895427,1531624,1617086,1420561,1853223,3092728,3505193,3659797,2575561,743757,1730711\n',
            'Berkeley,0,0,0,0,0,0,0,0,0,0,0,0\n',
            'Boone,0,50566,1477560,3045056,3804527,5851267,6278609,11607216,13842525,27618152,32446186,23277998\n',
            'Braxton,0,114422,286955,123991,13751,38414,218087,0,459517,3256906,1196489,439662\n',
            ]

def process_file_contents():
    lst = read_file_contents_coal()
    dic = {}
    coal_dic = {}
    yearcoaldic = {}
    ycdic = {}
    for stringdata in lst:
        city_data = stringdata.strip().split(',')
        year = 1900
        for j in range(1, 13):
            ycdic = {year: int(city_data[j])}
            year += 10
            yearcoaldic.update(ycdic)
        dic = {city_data[0]: yearcoaldic}

    coal_dic.update(dic)
    print(coal_dic)
    return coal_dic