중첩 된 사전에 할당하는 데 어려움을 겪고 있습니다. 저는 두 개의 학교, 세 명의 교사, 네 명의 학생으로 중첩 된 사전을 가지고 있습니다. 이것은 장난감의 예일 뿐이므로 학생과 교사는 각 학교마다 동일하지 않습니다. 그러나 나는 각기 다른 성적을 원한다. 그러나 아래의 코드를 사용하면 모든 학급과 모든 학교의 모든 학생의 성적은 마지막으로 입력 한 학교/학급의 성적과 동일합니다. 비슷한 질문이있을 나타납니다중첩 된 사전 할당 오류 - 변경 가능한 사전에 혼동이 있음
{'School A': {'mr. kronk': {'Adam': [86, 89, 94],
'Dave': [74, 85, 86],
'Jeff': [79, 94, 70],
'Nick': [90, 80, 97]},
'mr. smith': {'Adam': [86, 89, 94],
'Dave': [74, 85, 86],
'Jeff': [79, 94, 70],
'Nick': [90, 80, 97]},
'ms. jones': {'Adam': [86, 89, 94],
'Dave': [74, 85, 86],
'Jeff': [79, 94, 70],
'Nick': [90, 80, 97]}},
'School B': {'mr. kronk': {'Adam': [86, 89, 94],
'Dave': [74, 85, 86],
'Jeff': [79, 94, 70],
'Nick': [90, 80, 97]},
'mr. smith': {'Adam': [86, 89, 94],
'Dave': [74, 85, 86],
'Jeff': [79, 94, 70],
'Nick': [90, 80, 97]},
'ms. jones': {'Adam': [86, 89, 94],
'Dave': [74, 85, 86],
'Jeff': [79, 94, 70],
'Nick': [90, 80, 97]}}}
:
School A mr. smith Adam [71, 72, 82]
School A mr. smith Nick [86, 80, 96]
School A mr. smith Jeff [77, 70, 83]
School A mr. smith Dave [79, 83, 98]
School A ms. jones Adam [70, 98, 87]
School A ms. jones Nick [80, 94, 76]
School A ms. jones Jeff [79, 82, 93]
School A ms. jones Dave [90, 97, 85]
School A mr. kronk Adam [93, 75, 95]
School A mr. kronk Nick [80, 82, 72]
School A mr. kronk Jeff [75, 72, 89]
School A mr. kronk Dave [86, 92, 98]
School B mr. smith Adam [89, 77, 84]
School B mr. smith Nick [93, 71, 74]
School B mr. smith Jeff [78, 83, 83]
School B mr. smith Dave [72, 83, 70]
School B ms. jones Adam [82, 100, 78]
School B ms. jones Nick [80, 89, 100]
School B ms. jones Jeff [91, 81, 77]
School B ms. jones Dave [86, 86, 74]
School B mr. kronk Adam [82, 73, 100]
School B mr. kronk Nick [81, 71, 74]
School B mr. kronk Jeff [92, 100, 90]
School B mr. kronk Dave [86, 97, 85]
이, 불행하게도, 같은 해당 사전이 모습입니다 :
schools = ['School A', 'School B']
teachers = ['mr. smith', 'ms. jones', 'mr. kronk']
students = ['Adam', 'Nick', 'Jeff', 'Dave']
grade_dict ={}
for i in students:
grade_dict[i] = ''
for j in teachers:
teachers_dict[j] = grade_dict
for k in schools:
school_dict[k] = teachers_dict
for k in schools:
for j in teachers:
for i in students:
a = [randint(70, 100), randint(70, 100), randint(70, 100)]
school_dict[k][j][i] = a
이
내가 데이터를 같이 할 것입니다 stackoverflow에,하지만 그들은 내가 여기에 무슨 일이 있었는지 해결할 수 없었습니다. 감사.
하드과 같이 최종 DICT 최고의 아니다 코딩. –
이것은 사전을 초기화하는 훌륭한 방법입니다 (감사합니다!).하지만 중첩 된 사전의 가장 낮은 레벨에서 고유 한 값을 생성하는 문제는 해결되지 않았습니다. –
@GeoffPerrin 학생 점수를 무작위로 책정하고 싶다는 사실을 깨닫지 못해 사과드립니다! 최근 편집을 참조하십시오. – Ajax1234