Study/class note

python / 사전(del,clear,keys, values,items,sorted,in)

chanzae 2021. 12. 29. 12:28

122 사전의 특정 요소 제거하기(del)

딕셔너리에서 특정 요소(값)을 제거하려면 파이썬 내장함수 del을 이용하면 됨.

sol = {'태양':'sun','수성':'mercury','금성':'venuse','지구':'earth'}

del sol['태양']
print(sol)   #{'수성': 'mercury', '금성': 'venuse', '지구': 'earth'}

문제383. 아래의 딕셔너리에서 다시만난세계의 값만 지우시오.

dict = {'소녀시대':['다시만난세계','Gee'],'방탄소년단':['DNA','Fire']}

del dict['소녀시대'][0]
print(dict)  #{'소녀시대': ['Gee'], '방탄소년단': ['DNA', 'Fire']}

문제384. 아래의 music 딕셔너리에서 가수별로 맨 끝에 추가된 음악만 지우시오.

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

for i in music_dict:
    del music_dict[i][-1]

print(music_dict)  #{'비틀즈': ['yesterday'], '아이유': ['너랑나'], '마이클 잭슨': ['beat it']}



123 사전의 모든 요소 제거하기(clear)

딕셔너리.clear() : 딕셔너리의 모든 요소 제거(clear)

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

music_dict.clear()
print(music_dict)   # {}

 

 

124 사전에서 키만 추출하기(keys)

딕셔너리에서 key만 추출하고 싶다면 딕셔너리.keys()를 사용하면 됨.

sol = {'태양':'sun','수성':'mercury','금성':'venuse','지구':'earth'}

print(sol.keys())  # dict_keys(['태양', '수성', '금성', '지구'])

문제385. 위의 sol 딕셔너리의 데이터를 뽑아서 아래와 같이 결과를 출력하시오.

태양,수성,금성,지구

# rstrip 사용
sol = {'태양':'sun','수성':'mercury','금성':'venuse','지구':'earth'}

result = ''
for i in sol:
    result += i + ','
    
print(result.rstrip(','))

# join 사용
sol = {'태양':'sun','수성':'mercury','금성':'venuse','지구':'earth'}

result = []
for i in sol:
    result.append(i)
    
print(','.join(result))

 

 

125 사전에서 값만 추출하기(values)

# 키마다 값이 한 개인 경우
sol = {'태양':'sun','수성':'mercury','금성':'venuse','지구':'earth'}
print(sol.values())  
	#dict_values(['sun', 'mercury', 'venuse', 'earth'])

# 키마다 값이 여러개인 경우
music_dict = {'비틀즈': ['yesterday', 'imagine'], '아이유': ['너랑나', '마쉬멜로우'], '마이클 잭슨': ['beat it', 'smoth criminal']}
print(music_dict.values())
	#dict_values([['yesterday', 'imagine'], ['너랑나', '마쉬멜로우'], ['beat it', 'smoth criminal']])

문제386. for i in music_dict.values()를 이용해서 아래와 같이 출력되게 하세요.

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

for i in range(2):
    for k in music_dict.values():
        print(k)

문제387. (카카오 입사문제) 위의 결과를 다시 출력하는데 아티스트들의 노래가 겹치지 않게 출력하시오.

yesterday,너랑나,beat it,imagine,마쉬멜로우,smoth criminal

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

result = ''
for i in range(2):
    for k in music_dict.values():
        result += k [i] +','

print(result.rstrip(','))

리스트의 요소 갯수를 모를 경우

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

# length = []
# for i in music_dict.values():
#     length.append(len(i))

# max(length)

 


126 사전 요소를 모두 추출하기(items)

딕셔너리.items() : 딕셔너리의 요소 모두 추출

sol = {'태양':'sun','수성':'mercury','금성':'venuse','지구':'earth'}
for i in sol.items():
    print(i)
    
# ('태양', 'sun')
# ('수성', 'mercury')
# ('금성', 'venuse')
# ('지구', 'earth')

문제388. 위의 결과에서 아래의 결과만 출력하시오.

태양
수성
금성
지구

sol = {'태양':'sun','수성':'mercury','금성':'venuse','지구':'earth'}
for i in sol.items():
    print(i[0])

 

 

127 사전 정렬하기(sorted)

파이썬 내장함수 sorted()는 딕셔너리의 키를 오름차순으로 정렬한 결과를 리스트로 반환.

dict2 = {'소녀시대': '소원을 말해봐','방탄소년단':'다이너마이트','오마이걸':'살짝 설랬어'}

# dict2에서 키만 추출하시오.
print(dict2.keys())  # dict_keys(['소녀시대', '방탄소년단', '오마이걸'])

# 위의 결과를 정렬해서 출력하려면?
a = dict2.keys()
print(sorted(a))  # ['방탄소년단', '소녀시대', '오마이걸']

# 딕셔너리 자체를 sorted로 감싸서 출력하면 바로 "키"의 정렬된 결과를 리스트로 반환
sorted(dict2)  # ['방탄소년단', '소녀시대', '오마이걸']

문제389. 아래의 sol 딕셔너리에서 값들을 정렬해 리스트로 반환하시오.

['earth', 'mercury', 'sun', 'venuse']

sol = {'태양':'sun','수성':'mercury','금성':'venuse','지구':'earth'}

a = sol.values()
sorted(a)

 

 

128 사전에 특정 키가 존재하는지 확인하기(in)

키값 in 딕셔너리 : 딕셔너리에 특정 키가 존재하는지 확인

sol = {'태양':'sun','수성':'mercury','금성':'venuse','지구':'earth'}

if '지구' in sol:
    print('지구가 존재합니다.')
else:
    print('존재하지 않습니다.')

문제390. (점심시간 문제) 아래의 coffee_dict 딕셔너리를 가지고 아래의 함수를 실행하시오.

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

def coffee_menu():
    menu = input('원하는 메뉴를 입력하세요~ ')
    if menu in coffee_dict:
        return "%s는 메뉴에 있습니다."%menu
    else:
        return "%s는 메뉴에 없습니다."%menu

print(coffee_menu())

 

ㅇ 딕셔너리의 기능

1. 딕셔너리를 구성하는 방법(값이 한개일때, 값이 여러개 일때)

2. 딕셔너리[번호] = 값 : 딕셔너리의 값을 변경하는 방법

3. del 딕셔너리[번호] : 파이썬 내장함수로 딕셔너리의 값을 제거할때 사용

4. 딕셔너리.clear() : 딕셔너리의 모든 요소 제거

5. 딕셔너리.keys() : 딕셔너리에서 키만 추출

6. 딕셔너리.values() : 딕셔너리에서 값만 추출

7. 딕셔너리.items() : 딕셔너리의 요소 모두 추출

8. sorted(딕셔너리) : 딕셔너리의 요소를 정렬

9. 키값 in 딕셔너리 : 딕셔너리에 특정 키가 존재하는지 확인

 

 

몰입해야할 문제. 사전의 값 리스트 갯수가 다를때

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

length = []
for i in music_dict.values():
    length.append(len(i))            # 딕셔너리 값 리스트에 포함됨 요소의 갯수를 구함

result = ''
for i in range(max(length)):        # 위에서 구한 값 리스트 요소의 갯수 중 가장 큰 값을 대입 
    for k in music_dict.values():
        try:
            result += k[i]+', '
        except:                 # 인덱스가 없는 값은 continue로 넘김
            continue
                                        
print(result.rstrip(', '))
반응형