Перезапись пар значений ключей по сравнению с созданием новых для разных ключей - PullRequest
0 голосов
/ 01 декабря 2018

Моя цель:

{0: {'0':'0', '1':'1'), 1: {'0':'2', '1':'3'}, 2: {'0':'4','1':'0'}, 3:{'0':'1','1':'2'}, 4:{'0':'3' ,'1':'4' }}

Что я получаю:

{0: {'1': '1'}, 1: {'1': '3'}, 2: {'1': '0'}, 3: {'1': '2'}, 4: {'1': '4'}}

Поэтому это только сохранение части '1 и перезапись части' 0, но я не уверен, какИсправьте эту проблему, потому что все, что я читаю, говорит, что оно должно либо обновиться, если оно существует, либо создать, если оно не существует.Несколько замечаний: состояние от 0 до 4, алфавит - это ['0', '1'] значение - это всего лишь один символ из текстового файла.

Вот мой код:

for state in range(0, numStates):
    for letter in alphabet:
        value = DFAFileLines[state+3].split()[alphabet.index(letter)]
        print("State: " + str(state) + " Letter: " + letter +" Value: " + value)
        itemDict = dict()
        itemDict[letter] = value
        transitionTable[state] = itemDict

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Проблема с исходным кодом заключается в том, что вы сбрасываете itemDict каждый раз через внутренний цикл, и вам также следует назначить transitionTable один раз для внешнего цикла for для ключа состояния

for state in range(0, numStates):
        itemDict = dict()
        for letter in alphabet:
            value = DFAFileLines[state+3].split()[alphabet.index(letter)]
            print("State: " + str(state) + " Letter: " + letter +" Value: " + value)
            itemDict[letter] = value
        transitionTable[state] = itemDict
0 голосов
/ 01 декабря 2018

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

transitionTable = dict(dict())
for state in range(0, numStates):
    transitionTable[state] = {k: 0 for k in alphabet}

for state in range(0, numStates):
    for letter in alphabet:
        value = DFAFileLines[state+3].split()[alphabet.index(letter)]
        stateDict = transitionTable[state]
        stateDict[letter] = value

Разница в том, что у меня изначально было,

transitionTable[state] = {k for k in alphabet}

и сейчас

transitionTable[state] = {k: 0 for k in alphabet}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...