본문 바로가기

Study/class note

python / 사전(요소 추가, 요소값 변경)

120 사전에 요소 추가하기

ㅇ파이썬의 자료형 5가지 : 문자형, 숫자형, 리스트형, 튜플형, 사전형

사전형은 키:값으로 되어진 요소로 구성되어 있음. 사전형은 리스트형처럼 인덱스 번호로 요소를 접근하는게 아니라 키값으로 요소의 값에 접근

 

문제376. 아래의 2개의 리스트를 가지고 sol 딕셔너리를 생성하시오.

sol_eng = ['sun','mercury','venus','earth','mars']   # 키
sol_kor = ['태양','수성','금성','지구','화성']     # 값

sol = {}  # 비어있는 딕셔너리 생성
for i, k in zip(sol_eng, sol_kor):
    sol[i] = k   # sol[키] = 값
print(sol)
# {'sun': '태양', 'mercury': '수성', 'venus': '금성', 'earth': '지구', 'mars': '화성'}

zip을 이용하면 리스트를 여러개를 for문으로 요소들을 한꺼번에 불러올 수 있음. 다만, 리스트 안의 요소의 갯수들이 모두 동일해야함.

# 문법
# for i, k, j in zip(리스트1, 리스트2, 리스트3):
#    print(i,k,j)

 

문제377. 아래의 리스트를 coffee_dict라는 딕셔너리로 구성하시오.

{'아메리카노': 1500, '카페라떼': 2500, '카페모카': 3500, '녹차라떼': 3500}

c_type = ['아메리카노','카페라떼','카페모카','녹차라떼']
c_price = [1500,2500,3500,3500] 

coffee_dict = {}
for i, k in zip(c_type, c_price):
    coffee_dict[i] = k
print(coffee_dict)

위의 딕셔너리는 키도 하나, 값도 하나인 경우의 딕셔너리이고, 

키는 하나이고 값은 여러개인 경우는 아래와 같음.

 

우선, 키 하나에 값이 여러개가 append 되게끔 구성해주려면 default dictionary를 알아야 함. 

default dictionary 란, 일반 딕셔너리는 딕셔너리를 생성할 때 키만 있고 값이 없으면 딕셔너리가 생성되지 않음. 하지만 default dictionnary는 키만 있고 값이 없어도 생성 됨. 값은 나중에 append 시키면 됨.

# 1
from collections import defaultdict

gini = defaultdict(list)    #gini 디폴트 딕셔너리를 만드는데 값을 list로 담을 수 있게 만듦.
gini['비틀즈']   # 이처럼 빈 값을 가진 키를 생성시킬 수 있음.
print(gini)

# 2
from collections import defaultdict

gini = defaultdict(list)   #gini 디폴트 딕셔너리를 만드는데 값을 list로 담을 수 있게 만듦
gini['비틀즈'].append('yesterday')   # append 시키면 됨
print(gini)   # defaultdict(<class 'list'>, {'비틀즈': ['yesterday']})

문제378. for문과 zip을 이용해서 한번에 사전에 넣으시오.

artist = ['비틀즈', '비틀즈','아이유','아이유','마이클 잭슨','마이클 잭슨']
music = ['yesterday', 'imagine','너랑나', '마쉬멜로우','beat it','smoth criminal']

from collections import defaultdict

gini = defaultdict(list)

for i,k in zip(artist, music):
    gini[i].append(k)
print(gini)
# {'비틀즈': ['yesterday', 'imagine'], '아이유': ['너랑나', '마쉬멜로우'], '마이클 잭슨': ['beat it', 'smoth criminal']})

# set을 사용한 경우
artist = ['비틀즈', '비틀즈','아이유','아이유','마이클 잭슨','마이클 잭슨']
music = ['yesterday', 'imagine','너랑나', '마쉬멜로우','beat it','smoth criminal']

gini = {}
for i in set(artist):  #set을 사용하면 중복제거 되기 때문에 for문이 조금 덜 돔.
    gini[i] = []

print(gini)

딕셔너리에 값이 여러개 들어갈때는 리스트 형식으로 담김.

 


121 사전의 특정 요소값 변경하기

사전형 변수에 특정 요소값을 변경하는 방법은 다음과 같음.

1. 키 하나에 값 하나로 구성된 딕셔너리의 요소값 변경방법

# 사전형이름['키'] = '값'

coffee_dict = {'아메리카노': 1500, '카페라떼': 2500, '카페모카': 3500, '녹차라떼': 3500}

coffee_dict['녹차라떼'] = 4000
coffee_dict
# {'아메리카노': 1500, '카페라떼': 2500, '카페모카': 3500, '녹차라떼': 4000}

 

2. 키 하나에 값 여러개인 딕셔너리의 요소값 변경방법

music_dict = {'비틀즈': ['yesterday', 'imagine'], '아이유': ['너랑나', '마쉬멜로우'], '마이클 잭슨': ['beat it', 'smoth criminal']}

music_dict['비틀즈'][0] = 'let it be'
music_dict
# {'비틀즈': ['let it be', 'imagine'],
#  '아이유': ['너랑나', '마쉬멜로우'],
#  '마이클 잭슨': ['beat it', 'smoth criminal']}

문제379. 아래의 music 리스트의 요소값을 하나씩 출력하시오.

music = ['yesterday', 'imagine','너랑나', '마쉬멜로우','beat it','smoth criminal']

music = ['yesterday', 'imagine','너랑나', '마쉬멜로우','beat it','smoth criminal']

for i in music:
    print(i)

문제380. 위의 결과를 아래와 같이 출력하시오.

music = ['yesterday', 'imagine','너랑나', '마쉬멜로우','beat it','smoth criminal']

for i in music:
    print(i, end=', ')   # print함수의 end옵션을 이용해서 콤마(,)로 구분, 가로 출력
# yesterday, imagine, 너랑나, 마쉬멜로우, beat it, smoth criminal,

문제381. 위에서 완성했던 music_dict 딕셔너리에서 음악을 하나씩 뽑아내서 아래의 결과를 출력하시오.

music_dict = {'비틀즈': ['yesterday', 'imagine'], '아이유': ['너랑나', '마쉬멜로우'], '마이클 잭슨': ['beat it', 'smoth criminal']}

for i in music_dict:
    for k in range(2):
        print(music_dict[i][k], end = ', ')

# values() 사용한 방법
for i in music_dict.values():
    for k in i:
        print(k, end=', ')

문제382. (오늘의 마지막 문제) 위의 결과에서 맨 끝에 나오는 콤마()를 제거해서 출력하시오.

music_dict = {'비틀즈': ['yesterday', 'imagine'], '아이유': ['너랑나', '마쉬멜로우'], '마이클 잭슨': ['beat it', 'smoth criminal']}

result = ''
for i in music_dict.values():
    for k in i:
        result += k +','
        
print(result.rstrip(','))

 

반응형