Я новичок в Python и пытаюсь внести некоторые изменения в проект под названием (Чтение данных из электронной таблицы, глава 12 «Работа с Excel») из «Автоматизировать скучные вещи с помощью Python». Закончив проект, я хочу напечатать полученный ранее словарь на новом листе в той же книге.
Но сейчас, когда я пытался написать в листе Excel, у меня возникли некоторые проблемы с вложенным словарем. Сбой кода во второй строке во вложенном цикле, поэтому я предположил, что то же самое произойдет для строк netx в цикле
import openpyxl, pprint
libro=openpyxl.load_workbook(r"J:Pathtothedata\censuspopdata.xlsx")
hoja = libro.active
countyData={}
print('Reading rows...')
for row in range(2, hoja.max_row + 1):
# Each row in the spreadsheet has data for one census tract.
state = hoja['B' + str(row)].value
county = hoja['C' + str(row)].value
pop = hoja['D' + str(row)].value
countyData.setdefault(state,{})
countyData[state].setdefault(county, {'tracts': 0, 'pop': 0})
countyData[state][county]['tracts'] += 1
countyData[state][county]['pop'] += int(pop)
print('Writing results...')
libro.create_sheet(index=1,title='Subtotal')#Create a new worksheet
hoja1 = libro.worksheets[1]#set that sheet as active
#Here starts the problems
next_row = 1
for key, value in countyData.items():#for each element in allCounty print the results
for pop, tracts in value.items():
hoja1.cell(column=1,row=next_row,value=key)
hoja1.cell(column=2,row=next_row,value=value)
hoja1.cell(column=3,row=next_row,value=pop)
hoja1.cell(column=3,row=next_row,value=tracts)
next_row+=1
libro.save
Я пытался изменить вторую строку
hoja1.cell (столбец = 2, строка = next_row, значение = значение) до:
hoja1.cell(column=2,row=next_row,value=countyData[key])
и не работает.
Он показывает мне весь словарь с легендой «поднять ValueError (« Невозможно преобразовать {0! R} в Excel ».format (значение))»
тогда я пробовал:
hoja1.cell (столбец = 2, строка = next_row, значение = countyData.get (ключ) и показывает мне:
hoja1.cell(column=3,row=next_row,value=value.get(pop)
^
SyntaxError: invalid syntax
Я ожидаю, что результат будет
«Штат», «Округ», «Население», «Участки» для каждого значения в словаре.