본문 바로가기
프로그램

[파이썬] 문제 : 클래스(AddWorders)와 딕셔너리

by 오디세이99 2023. 12. 10.
728x90
반응형

 

def AddWorker(name, exp=0):
    workers[name] = exp
    
workers = {}

AddWorker("신입1")
AddWorker("신입1",2)
AddWorker("신입5",2)
AddWorker("신입5")

for i in workers.items():
    print("[이름] %s / [경력] %d년"%(i[0], i[1]))

딕셔너리 관련 입니다.

다음과 같이 A key인 값이 처음에는 1 로 했지만 다음에 A key에 다시 2를 입력한 것이어서

이 시점에는 A key의 value는 2가 됩니다.

dic = {}
dic['A'] = 1      # 딕셔너리 A key = 값 (1)
print(dic['A'])

dic['A'] = 2      # 딕셔너리 A key = 값 (2)
print(dic['A'])

exp=0 은 exp 인수가 주어지지 않으면 exp=0 값이 주어집니다.

def AddWorker(name, exp=0):     # exp=0 으로 하면 exp 인수가 없을때는 0 이 지정됨
    workers[name] = exp

AddWordkers("신입1")

으로 하면 workers 딕셔너리가 workers['A']는 value가 0이 됩니다. 이때 exp=0 이됩니다.

그 다음

AddWorkders("신입1",2)

하고 하면 이때는 exp 인수가 2가 되어서 딕셔너리 workders['A']의 value는 2가 됩니다.

신입5은 위와 반대로 처음에는 2 였다가 0 이 됩니다.

 

다음은 각 라인에 딕셔너리를 출력해서 어떻게 되는지 보면 다음과 같습니다.

 

def AddWorker(name, exp=0):     # exp=0 으로 하면 exp 인수가 없을때는 0 이 지정됨
    workers[name] = exp
    
workers = {}

AddWorker("신입1")            # '신입1'을 키로 해서 추가. 이때 값이 없으니 exp=0 값으로 사용됨
print(workers)                # {'신입1':0}
AddWorker("신입1",2)          # '신입1' 키에 값을 2로 함. 기존 키가 있니 값이 변경 굉
print(workers)                # {'신입1':2}
AddWorker("신입5",2)          # '신입5'가 추가됨. 이때 exp=5 값이 주어 짐
print(workers)                # {'신입1':2, '신입5':2}
AddWorker("신입5")            # '신입5' 키만 주어짐. 그러면  exp=0 으로 0 값으로 변경됨
print(workers)                #  {'신입1':2, '신입5':0}

print('='*30)                   # = 문자를 30개 출력
for i in workers.items():       # items()는 키와 값을 돌려 줌. i는 (키, 값)이 됨.i[0]는 키, i[1]는 값
    print("[이름] %s / [경력] %d년"%(i[0], i[1]))

딕셔너리의 items()는 키와 값을 같이 돌려 줍니다.
그래서 i 는 튜플인 (키, 값) 이 됩니다. 튜플은 리스트와 같은데 값이 수정이 되지 않는다고 보시면 되요.
그래서 print()에서 i[0]은 키, i[1]은 값이 됩니다.

 

그 print문에 제가 위 작동상태를 보기 위하 출력들과 분리하기 위해서 추가한 거예요.
=를 30개쯤 출력하면 될 것 같아서 제가 임의로 지정한 것입니다.
for i in workers.items():
이러게 되어 있으면 items() 함수가 딕셔너리의 키와 값을 i에 대합해 줍니다.
그럼 i는 튜플타입의 (키,값) 구조가 되요.
그때 workers는 {'신입1':2. '신입5':0} 인 상태입니다.
그래서 for문은 2번 반복됩니다.
그래서 처음에는 i는 ('신입1',2) 가 되고
print문서 i[0]는 '신입1', i[1]는 2가 됩니다.
두번째 i는 ('신입5', 0) 가 되고
print문서 i[0]는 '신입5', i[1]는 0이 됩니다.

 

 

728x90
반응형

댓글