2013-07-26 3 views
0

Ребят это очень странно, и, возможно, некоторые незначительные ошибки мне не удалось увидеть:Python дублирующихся ключи, не могут найти ключи в Словаре

Так у меня есть словарь с ключами, как кортежи. Каждый ключ является кортежем (state, action), где state - кортеж, содержащий значения и кортежи. Действие - это значение.

Я загружаю словарь из файла и загружается правильно. В какой-то момент во время программы он проверяет наличие ключа. Если это так, измените значение, в противном случае создайте dict [key] = 0.

Проблема заключается в следующем: словарь имеет ключ (состояние, действие) с определенным значением. Когда я пытаюсь проверить, существует ли он с помощью «in», он утверждает, что он не существует. Когда я проверяю с dict.keys(), он утверждает, что он существует. Я также выдаю dict.keys() и могу убедиться, что он действительно существует.

Кроме того, если я сравниваю значения с другими значениями (например: dict [key]> secondValue), программа сработает. Если я делаю dict [key] = secondValue, иногда он не меняет значение ключа, а создает дубликат ключа! Что тогда, dict.keys() возвращает два или более одинаковых ключа. Вот код:

if (key not in self.currentDict): 
       pass 
       print "key not in self.currentDict" 
       if key not in self.currentDict.keys(): 
        print "key not in self.currentDict.keys()" 
       else: 
        print "key in self.currentDict.keys()" 

выше отступы не является ошибкой, отступы штраф в реальном коде.

Теперь каждый из этих аварии программа:

print "self.currentDict[key] = %s" % (self.currentDict[key]) 
if (self.currentDict[key] > value) 

Я серьезно не знаю, почему он ведет себя так. Если я запускаю новый файл, программа запускается и сохраняет файл, он работает правильно. Если я использую существующий файл, поэтому существующий словарь, он либо сбой, либо создает дубликаты ключей (что многие источники утверждают, что это невозможно).

Любые идеи? Благодаря!

--EDIT--

проход был только там до отпечатков, это не влияет на результаты с

Это последний выход я из программы. Очень жаль, что словарные ключи довольно длинны!

key not in self.currentDict 

key in self.currentDict.keys() 

key not in self.currentDict 

self.currentDict = { 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.5): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.6): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.7): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.7): -88.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.2): -96.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.6): -168.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.1): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.5): -91.2, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.8): -102.39999999999999, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.7): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.3): -113.6, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.2): -80.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.1): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.3): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.5): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.6): -96.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.8): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.4): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.4): -80.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.8): -104.8030982226376, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.8): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.1): -120.0, # <--------------- 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.2): -96.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.5): -97.6, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.2): -96.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.4): -120.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.3): -107.19999999999999, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.6): -88.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.7): -96.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.4): -104.0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.1): 0, 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.3): -88.0} 

self.currentDict.keys() = [ 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.5), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.6), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.7), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.7), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.2), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.6), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.1), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.5), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.8), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.7), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.3), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.2), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.1), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.3), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.5), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.6), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.8), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.4), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.4), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.8), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.8), 
     (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.1), # <----------- 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.2), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.5), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.2), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.4), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.3), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.6), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.7), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.4), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.1), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.3)] 

И

key = (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.1) 

типа self.currentDict = <type 'dict'>

Я получение self.currentDict путем загрузки словаря словарей из файла и глубоко копируя последний словарь к себе .currentDict.

Я также выполняется этот код:

keyProblems = [k for k in self.currentDict.keys() if k not in self.currentDict] 
    print "keys with problems: %s" %(str(keyProblems)) 

который вернулся этот результат:

keys with problems: 
    [(((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.6), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.7), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.7), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.2), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.6), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.1), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.8), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.7), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.3), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.2), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.1), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.3), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.6), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.8), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.4), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.4), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.8), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.8), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 1.1), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.2), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.2), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.4), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.3), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.6), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.7), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 3.4), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 4.1), 
    (((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)), 2.3)] 

Просто для уточнения, все значения выше (включая действия) не являются дискретными (без единовременных поплавки)

Изолировать проблему между двумя вызовами метода. Эти методы называются последовательно из приложения.В конце первого метода нет ключей с проблемами. В самом начале второго метода у многих ключей есть проблемы (как в соответствии с приведенным выше кодом). Проблема теперь еще более загадочна, чем было раньше:/

Обновление: Я тестировал ту же самую программу на другом ноутбуке, и, на удивление, она работает безупречно без каких-либо «ключевых проблем» даже после нескольких десятков пробегов. Это конфигурации на каждом ноутбуке:

ноутбуков 1:

Windows 7 Home Premium Service Pack 1, 64-bit, i7-3610QM, 8GB RAM 
    Running under Eclipse with PyDev, application's internal Python: Crashes + key problems 
    Running directly from .bat file and outside Eclipse/Pydev, Pydev still installed: Crashes + key problems 
    Running under Eclipse with Pydev, using Python 2.7 installed in drive C: Crashes + key problems 
    Running directly from .bat file and outside Eclipse/Pydev, Pydev uninstalled: Crashes + key problems 

Laptop 2:

Windows 7 Ultimate Service Pack 1, 64-bit, Dual Core T5550, 4GB RAM 
    Pydev: Did not manage to test it with Pydev without having import errors 
    Running directly from .bat file and outside Eclipse/Pydev, Pydev installed: Works correctly even after tens of runs, list of key problems always empty 

Я использую точные копии директории проекта и те же пути для обоих ноутбуков. Какие-нибудь идеи о том, что может произойти?

+0

Пожалуйста, разместите словарь (или образец, если он слишком мал) и ключ, который вы проверяете – inspectorG4dget

+0

Может ли это иметь какое-то отношение к завершению строки в файле, который вы читаете из - эти вещи могут быть фиктивными (CR против CRLF против LF в зависимости от ОС). Не первый раз это вызвало трудность отслеживания проблемы. Попробуйте сбросить строки как шестнадцатеричные. – Floris

+0

@ inspectorG4dget только что опубликовал словарь :) – user2623934

ответ

0

Я думаю, что вы думаете, что есть разница между self.currentDict и self.currentDict keys ... и что как-то первый дает вам первый элемент вашего кортежа, а второй один второй ...

Чтобы проверить, кортеж существует в качестве ключа:

if ('state', 'value') in self.currentDict 

И назначенных вы должны сделать:

self.currentDict[('state', 'value')] = 'some value' 

(примечание: круглые скобки не стрите ctly необходимо, но imho сделать это яснее)

+0

Я строй ключей, как кортежи, так: stateTuple = преобразование состояния из списка кортежа действия = значение действия ключа = (stateTuple, действие) – user2623934

+0

Просто пыталось сделать (self.currentDict [(stateTuple, действие) ]> значение), но все равно получил тот же сбой:/ – user2623934

+1

@ user2623934 уточнить о сбое ... скопировать и вставить ошибку/traceback в ваш вопрос –

Смежные вопросы