尽管密钥存在

时间:2015-11-16 17:38:00

标签: python dictionary

我有点不知所措。我正在字典中初始化一个字典,它一切正常,直到我想检查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

除了关键错误,我会说这一切都按预期工作。所以我的问题是导致这个关键错误的原因(特别是因为它似乎都是正确的并且密钥存在)?

1 个答案:

答案 0 :(得分:1)

您正在犯案例错误 - 仔细观察:

   f.write(str(self.Data['Configuration']['ScreenWidth']))
        while (rayNumber < self.Data['Configuration']['Screenwidth']):

第一次使用大写字母W拼写,第二次使用小写字母拼写。这是两个不同的,不相关的子键。