노력에는 지름길이 없으니까요

dictionary(사전형) 정리 본문

Python

dictionary(사전형) 정리

데건 2024. 7. 15. 14:14
728x90

 

무조건 리스트만 쓰는 습관을 고쳐버리고 싶어서...

dictionary에 대해 완벽하게 조사를 하고 메소드도 정리해두겠다.

 


 

  

딕셔너리에서 자주 사용되는 메서드

  • keys(): 모든 키를 dict_keys 객체로 반환
  • values(): 모든 값을 dict_values 객체로 반환
  • items(): 모든 키-값 쌍을 (키, 값) 튜플로 구성된 dict_items 객체로 반환
  • get(): 지정된 키에 대한 값을 반환합니다. 키가 존재하지 않으면 기본값을 반환
  • pop(): 지정된 키와 해당 값을 딕셔너리에서 제거하고 값을 반환
  • popitem(): 딕셔너리에서 마지막 키-값 쌍을 제거하고 반환

 

딕셔너리 for문 사용법

for k, v in test.items():
	print(k) # key
    print(v) # value

 

 

value에 해당하는 key값 찾기

[k for k, v in test.items() if v == '특정 value']
test['특정값']

위와 같은 간단한 방법으로도 일단 출력이 되긴 하지만,

만약 value 값을 가진 key값이 복수일 경우에는 하나만 출력된다.

 

 

key에 해당하는 value값 찾기

value = test.get('특정 key')

 

 

가장 큰 value를 가진 key 찾기

max(test, key = test.get)

다만 max( ) 함수는 가장 큰 값이 여러 개가 있어도 마지막 하나만 반환한다.

따라서 max( ) 값(value)이 얼마인지 찾은 다음 그와 값이 일치하는 키를 모두 추린다.

(SQL에서 서브쿼리를 응용해 최대값을 가진 id를 찾고 이후 참고하는 식의 문제를 생각하면 편할 듯 싶다.)

 

 

key로 정렬하기

a = {2:10.4, 1:11.7, 4:12.3, 3:13.6, 5:15.4}
sorted_a = sorted(a.items())
print(sorted_a)

→ [(1, 11.7), (2, 10.4), (3, 13.6), (4, 12.3), (5, 15.4)]

items( )를 뽑아내어 sorted( ) 함수로 정렬.

내림차순은 reverse=True

 

 

value로 정렬하기

cats = dict(코리안숏헤어 = 45.2, 러시안블루 = 19.0, 
            페르시안 = 18.7, 잘모르겠다 = 16.8, 
            샴 = 11.0)
sorted_cats = sorted(cats.items(), 
                     key = lambda x: x[1])
sorted_cats

→ [('샴', 11.0),
   ('잘모르겠다', 16.8),
   ('페르시안', 18.7),
   ('러시안블루', 19.0),
   ('코리안숏헤어', 45.2)]
# [출처] [딥러닝을 위한 파이썬] 딕셔너리 정렬하기|작성자 Sailboat
sorted_cats = sorted(cats.items(), 
                     key = lambda x: x[1])

람다를 사용해서 value를 기준으로 정렬하겠다고 선언하면 된다.

 

 

리스트를 dictionary로 만드는 법

dogs = ['말티즈', '푸들', '포메라니안']
new = {c : i + 1 for i, c in enumerate(dogs)}
print(new)

{'말티즈': 1, '푸들': 2, '포메라니안': 3}

 

 

dictionary로 개수 세는 법

new = {}
for word in dogs:
    if word not in new:
        new[word] = 1
    else:
        new[word] += 1   # <-----
print(new)

{'골든리트리버': 1, '진돗개': 1, '말티즈': 2, '푸들': 2, '믹스견': 2, '포메라니안': 1}

set을 쓸 수도 있지만, 위와 같이 for문으로 돌리면 데이터가 본래 정렬되어 있는 순서대로 dictionary 결과가 차곡차곡 쌓임

set으로 하면 처음 등장 순서로 항상 정렬되진 않는다.

728x90
반응형