我有点不知所措。我正在字典中初始化一个字典,它一切正常,直到我想检查while语句中定义的值。
我收到“ScreenWidth”的关键错误。 我的第一次尝试是通过将整个字典写入.txt文件然后我在那里访问的子字典部分本身来看看变量是否被意外修改.....这一切都有效并且得到了我预期的结果但仍然在里面我发现关键错误。
初始化:
def __init__(self):
self.Data = {
'Configuration': { 'MaxMapWidth': 256, 'MaxMapHeight': 256,
'TileWidth': 1216, 'TileHeight': 694,
'ScreenWidth': 1366, 'ScreenHeight': 768,
'MaxBiewDistance': 10 },
'Map': {},
'Tiles': {},
'Player': {
'Position': { 'MapName': None, 'X': 1, 'Y': 1, 'Direction': 0 }# in degree }
}
}
方法:
def MyDo(self):
f = open("e:\\test\\test.txt", "w")
for key in self.Data:
f.write(key + "\n")
for subkey in self.Data[key]:
f.write(" " + subkey + "\n")
if ("Configuration" in key):
f.write(" " + str(self.Data[key][subkey]) + "\n");
rayNumber = 0
f.write(str(self.Data['Configuration']['ScreenWidth']))
while (rayNumber < self.Data['Configuration']['Screenwidth']):
#.... do my thing
rayNumber = rayNumber + 1
txt文件中的值:
Map
Forest
Tiles
tile003
tile002
tile001
tile007
tile006
tile005
Configuration
ScreenHeight
768
ScreenWidth
1366
MaxMapWidth
256
TileHeight
694
TileWidth
1216
MaxBiewDistance
10
MaxMapHeight
256
Player
Position
1366
除了关键错误,我会说这一切都按预期工作。所以我的问题是导致这个关键错误的原因(特别是因为它似乎都是正确的并且密钥存在)?
答案 0 :(得分:1)
您正在犯案例错误 - 仔细观察:
f.write(str(self.Data['Configuration']['ScreenWidth']))
while (rayNumber < self.Data['Configuration']['Screenwidth']):
第一次使用大写字母W拼写,第二次使用小写字母拼写。这是两个不同的,不相关的子键。