通过嵌套字典的迭代循环 - 在第二个停止
Iteration loop through nested dictionary - stoping at second
我想了第二个小时,但我不知道为什么会出现错误。
错误说循环找不到字典的第二阶段。
from openpyxl import load_workbook
book = load_workbook('OBS.xlsx')
zakladkaall = book.get_sheet_by_name('ALL')
licznik = 1
liczkolumny = 1
materialproduction = {
licznik : {liczkolumny : ""}
}
for wiersz in range(2, zakladkaall.max_row):
for kolumna in "ABCDEFGHI":
komorka = "{}{}".format(kolumna, wiersz)
wartosckomorki = zakladkaall[komorka].value
materialproduction[licznik][liczkolumny] = wartosckomorki
if liczkolumny < 9:
liczkolumny += 1
print(licznik)
print(liczkolumny)
else:
liczkolumny = 1
licznik += 1
print(licznik)
print(materialproduction[licznik][liczkolumny])
循环应该像这样制作字典:
材料生产[1][1]
.
.
.
材料生产[1][9]
材料生产[2][1]
.
.
.
材料生产[2][9]
等,但是当"licznik"(第一阶段)将数字增加到“2”时出现问题...
你能帮帮我吗?
materialproduction[key1][key2] = value
将尝试查找 materialproduction[key1] 的值,然后将 key2-value 对添加到该结果中。但是'2'不是材料生产中存在的关键。所以你会在那个查找中得到一个 KeyError。
您需要做的是为每个 licznik 键添加一个字典。例如,在 materialproduction[licznik][liczkolumny] = wartosckomorki 之前添加以下内容:
if liczkolumny == 1:
materialproduction[licznik] = {}
更简洁的方法是使用 defaultdict:
from collections import defaultdict
materialproduction = defaultdict(dict)
如果键不存在,将使用字典作为结果,而不是出错,这就是您所追求的。
我想了第二个小时,但我不知道为什么会出现错误。 错误说循环找不到字典的第二阶段。
from openpyxl import load_workbook
book = load_workbook('OBS.xlsx')
zakladkaall = book.get_sheet_by_name('ALL')
licznik = 1
liczkolumny = 1
materialproduction = {
licznik : {liczkolumny : ""}
}
for wiersz in range(2, zakladkaall.max_row):
for kolumna in "ABCDEFGHI":
komorka = "{}{}".format(kolumna, wiersz)
wartosckomorki = zakladkaall[komorka].value
materialproduction[licznik][liczkolumny] = wartosckomorki
if liczkolumny < 9:
liczkolumny += 1
print(licznik)
print(liczkolumny)
else:
liczkolumny = 1
licznik += 1
print(licznik)
print(materialproduction[licznik][liczkolumny])
循环应该像这样制作字典: 材料生产[1][1] . . . 材料生产[1][9] 材料生产[2][1] . . . 材料生产[2][9]
等,但是当"licznik"(第一阶段)将数字增加到“2”时出现问题... 你能帮帮我吗?
materialproduction[key1][key2] = value
将尝试查找 materialproduction[key1] 的值,然后将 key2-value 对添加到该结果中。但是'2'不是材料生产中存在的关键。所以你会在那个查找中得到一个 KeyError。
您需要做的是为每个 licznik 键添加一个字典。例如,在 materialproduction[licznik][liczkolumny] = wartosckomorki 之前添加以下内容:
if liczkolumny == 1:
materialproduction[licznik] = {}
更简洁的方法是使用 defaultdict:
from collections import defaultdict
materialproduction = defaultdict(dict)
如果键不存在,将使用字典作为结果,而不是出错,这就是您所追求的。