Ich habe etwas Code, den ich analysiere. Aber ich habe festgestellt, dass das Iterieren über ein Wörterbuch es leert. Ich habe das Problem behoben, indem ich eine Deepcopy des Dictionarys mache und in einem Code, der die Werte anzeigt, darüber iteriere und später das ursprüngliche Dictionary verwende, um darüber zu iterieren, um einem 2D-Array Werte zuzuweisen. Warum wird das ursprüngliche Wörterbuch überstrichen, um es anzuzeigen, so dass es später unbrauchbar ist, da es jetzt leer ist? Alle Antworten sind willkommen.Python iterieren über Wörterbuch leert es
import copy
# This line fixed the problem
trans = copy.deepcopy(transitions)
print ("\nTransistions = ")
# Original line was:
# for state, next_states in transitions.items():
# Which empties the dictionary, so not usable after that
for state, next_states in trans.items():
for i in next_states:
print("\nstate = ", state, " next_state = ", i)
# Later code which with original for loop showed empty dictionary
for state, next_states in transitions.items():
for next_state in next_states:
print("\n one_step trans state = ", state, " next_state = ", next_state)
one_step[state,next_state] += 1
Ein Druck des Wörterbuchs:
Transistions =
{0: <map object at 0x0000000003391550>, 1: <map object at 0x00000000033911D0>, 2: <map object at 0x0000000003391400>, 3: <map object at 0x00000000033915F8>, 4: <map object at 0x0000000003391320>}
Typ:
Transistions =
<class 'dict'>
Edit: Hier ist der Code, die Karte verwendet. Irgendwelche Vorschläge, wie man es bearbeitet, um das Wörterbuch zu erstellen, ohne Karte zu verwenden?
numbers = dict((state_set, n) for n, state_set in enumerate(sets))
transitions = {}
for state_set, next_sets in state_set_transitions.items():
dstate = numbers[state_set]
transitions[dstate] = map(numbers.get, next_sets)
Iterieren über einen dict Leert es nicht. Du hast einen anderen Fehler. – user2357112
Was ist die Art von 'Übergängen'? Bist du sicher, dass es ein Wörterbuch ist? Probiere 'print (tippe (Übergänge))' und füge das Ergebnis ein. –