#python #dictionary #nested #mergeddictionaries
#python #словарь #вложенный #mergeddictionaries
Вопрос:
Я пытался обновлять основной словарь каждым новым в цикле, но каждый раз он перезаписывал значения внутри вложенного словаря. Я имею в виду, что я хочу что-то вроде этого:
{'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}}
(для всех городов)
def read_file_contents_coal():
return ['Barbour,73041,895427,1531624,1617086,1420561,1853223,3092728,3505193,3659797,2575561,743757,1730711n',
'Berkeley,0,0,0,0,0,0,0,0,0,0,0,0n',
'Boone,0,50566,1477560,3045056,3804527,5851267,6278609,11607216,13842525,27618152,32446186,23277998n',
'Braxton,0,114422,286955,123991,13751,38414,218087,0,459517,3256906,1196489,439662n',
]
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
Ответ №1:
[РЕДАКТИРОВАТЬ]: проблема в том, что вам нужно перейти yearcoaldic
к первому циклу и всегда устанавливать для него значение en empty dictionary, иначе вы всегда будете перезаписывать свои значения так, как вы испытали.
def process_file_contents():
lst = read_file_contents_coal()
dic = {}
coal_dic = {}
ycdic = {}
for stringdata in lst:
yearcoaldic = {}
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}
dic[city_data[0]] = yearcoaldic
# coal_dic.update(dic)
# print(coal_dic)
return dic
Комментарии:
1. Когда я пробовал так, каждый город получал значения последнего добавленного города ;/ Это та же проблема, что и у меня с моим предыдущим кодом. В любом случае спасибо за помощь <3 <3
2. Я имею в виду, что в конце, при выполнении программ, каждый город получал вложенный словарь с годами ofc, и эти годы получали одинаковые значения для каждого города, одинаковые значения для последнего добавленного мной города. Каждый город получил это начало {1900: 0, 1910: 0, 1920: 1270782,
3. Мой плохой, исправляя проблему, вы всегда инициализируете
yearcoaldic
пустой словарь, иначе вы всегда будете переписывать его так, как вы испытали4. О да, отлично работает, как я хочу <3 большое спасибо <3 Хорошего дня!