본문 바로가기
개발일지/Python

[복기] 파이썬 이중 딕셔너리 이용 코드

by 다니엘의 개발 이야기 2022. 5. 12.
320x100

이번껀 진짜 개빡쳤었다.

반복하고 반복해도 원인을 모르겠어서 그냥 코드 갈아 엎어서 처음부터 다시 시작했더니 되더라.

 

주된 문제는

0으로 시작할 수 없습니다. 라는 에러와

키값에 문제가 있다는 에러였다.

 

이번 것의 교훈은 작은 단어와 똑같애 보이는 단어라도 주의깊게 봐야하며

육안으로 봤을때 student 와 students라서 비슷해보이지만 메모리 값이 1만 달라도 그냥 다른 값이라는걸

다시한번 되새기게 되었다.

 

'''
#해설코드 따라했던건데 실패.
# 계속에러가 뜬다
# 그래서 그냥 일단은 버리고 새로 만들려고 한다.

students = {'S21-0001':{'이름':"최성훈",
                        '성구분':'M',
                        '전공':'디자인',
                        # 짜증나게 에러가 계속뜬다
                        # SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers
                        # 아.... ㅅㅂ 연락처 문자처리 안되니깐 계속 에러나더라;
                        '연락처':'010-1234-5678',
                        '메일':'hun@gmail.com',
                        '취미':['농구, 음악']},
            'S21-0002':{'이름':"탁영우",
                        '성구분':'M',
                        '전공':'바리스트',
                        '연락처':'010-5678-9012',
                        '메일':'yeong@gmail.com',
                        '취미':['축구']},
            'S21-0003':{'이름':"황진영",
                        '성구분':'M',
                        '전공':'음악',
                        '연락처':'010-9012-3456',
                        '메일':'jin@gmail.com',
                        '취미':['수영, 코딩']},
            }

print(students)

# 딕셔너리에서 가장 효율적으로 반복문을 사용하는 것은 for 문이라고 한다.

# 가장 겉의 key인 S21-0001 같은 거에 대한 키를 불러오는 코드다.
for k1 in students.keys():
    print('-'*40)
    print(k1)

    # k1 보다는 하위 개념에 있어서 이름, 성구분 같은걸 불러오는 코드다
    # 두번째 시도를 하고 보니 여기가 문제였는데, students에 덮어씌우는게 문제가되는 코드였나?
    students = students[k1]
    for k2 in students.keys():
        print(f'{k2} : {students[k2]}')

'''

students = {'S21-0001':{'이름':'최성훈',
                        '성구분':"M",
                        '전공':'디자인',
                        '연락처':'010-1234-5678',
                        '메일':'hun@gmail.com',
                        '취미':['농구','음악']},
            'S21-0002': {'이름': '탁영우',
                         '성구분': "M",
                         '전공': '바리스타',
                         '연락처': '010-5678-9012',
                         '메일': 'yeong@gmail.com',
                         '취미': ['축구']},
            'S21-0003': {'이름': '황진영',
                         '성구분': "M",
                         '전공': '음악',
                         '연락처': '010-9012-3456',
                         '메일': 'jin@gmail.com',
                         '취미': ['수영', '코딩']},
            }

for k1 in students.keys():
    print('-'*40)
    print(f'학생번호: {k1}')

    # student 와 students다. 헷갈리면 안된다.
    student = students[k1]
    for k2 in student.keys():
        print(f'{k2} : {student[k2]}')


studentNo = input('조회 대상 학생 번호 입력: ')
print(f'{studentNo} : {students[studentNo]}')
300x250