본문 바로가기
개발일지/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