私は分析しているいくつかのコードがあります。しかし、私は辞書を反復することでそれが空になることを発見しました。私は、ディクショナリのディープコピーを作成し、値を表示するコードでそれを反復し、後で元のディクショナリを使用して値を2次元配列に割り当てるために反復処理することによって問題を修正しました。それが空になったので、後で辞書を使用することができないように、元の辞書を反復して空にするのはなぜですか?すべての返信を歓迎します。python反復辞書emptysそれ
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
辞書の印刷:
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>}
タイプ:
Transistions =
<class 'dict'>
編集:ここではマップを使用するコードがあります。どのようにマップを使用せずに辞書を作成するためにそれを編集するための任意の提案?
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)
反復処理をそれを空にしません。他のバグがあります。 – user2357112
'トランジション 'の種類は何ですか?それが辞書だと確信していますか? 'print(type(transitions))'を試して、結果を貼り付けてください。 –