Python 尽管存在密钥,但字典密钥错误

Python 尽管存在密钥,但字典密钥错误,python,dictionary,Python,Dictionary,我有点不知所措。我正在初始化字典中的一个字典,它可以正常工作,直到我想检查while语句中定义的值为止 在这里,我得到了一个“屏幕宽度”的关键错误。 我的第一次尝试是查看变量是否被意外修改,方法是将整个字典写入.txt文件,然后是我在while中访问的子字典部分本身……所有这些都可以工作,并得到我预期的结果,但仍然在while中,而我忽略了键错误 初始化: def __init__(self): self.Data = { 'Configurati

我有点不知所措。我正在初始化字典中的一个字典,它可以正常工作,直到我想检查while语句中定义的值为止

在这里,我得到了一个“屏幕宽度”的关键错误。 我的第一次尝试是查看变量是否被意外修改,方法是将整个字典写入.txt文件,然后是我在while中访问的子字典部分本身……所有这些都可以工作,并得到我预期的结果,但仍然在while中,而我忽略了键错误

初始化:

    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
除了关键的错误之外,我想说这一切都按预期进行。因此,我这里的问题是,是什么导致了这个关键错误(尤其是因为它似乎都是正确的,而且关键是存在的)?

您犯了一个案例错误——请仔细观察:

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

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

可能是因为
'ScreenWidth'!='屏幕宽度“
(区分大小写!)。看到while loop line.tnx现在已经读了好几个小时了--我看了所有的公告,。。。。但情况并非如此。tnxbtw很高兴知道为什么-1(从我看到的问题很清楚,这是一个愚蠢的事情,因为一封被忽视的案例信不应该授予a-据我所知,因此很高兴知道为什么)就是这样。我真的很讨厌发生这种情况……除了w/w.tnx之外,其他所有东西都会接受,因为stackoverflow让我觉得区分大小写比帮助更麻烦——唉,Python语言是区分大小写的,大多数文件系统也是如此,我讨厌这种情况(我确实怀念例如Pascal和Windows文件系统的不区分大小写的特性——尽管我还没有怀念到足以让我切换回这些技术的程度:-)。至少对于您控制的数据结构,您可能会选择将所有键都设置为小写。由于c#,我已经习惯于将camelcase设置为与所有内容一样好的大小写。否则,我就不会在python中费心了(这里也是windows用户^^)
   f.write(str(self.Data['Configuration']['ScreenWidth']))
        while (rayNumber < self.Data['Configuration']['Screenwidth']):