250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 태블로
- 한줄for문
- f-string
- 데이터시각화
- ★
- 데이터전처리
- 시각화
- AB테스트
- 리스트
- 아티클스터디
- 반복문
- 이중for문
- Til
- SQL
- SQLD
- Join
- python
- 가설검정
- map
- Set
- Max
- 선형회귀
- 프로그래머스
- 내배캠_학습기록
- 다중공선성
- 통계학
- DATE_SUB
- 내일배움일지
- 내일배움캠프
- Leetcode
Archives
- Today
- Total
노력에는 지름길이 없으니까요
dictionary(사전형) 정리 본문
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
반응형
'Python' 카테고리의 다른 글
(미완) 데이터전처리, 시각화 - 데이터시각화 (0) | 2024.07.19 |
---|---|
그래프 (Graph)의 정의, 장단점, 구현법 (1) | 2024.07.18 |
파이썬, 데코레이션 (0) | 2024.07.15 |
파이썬, 불리언 인덱싱이란? (0) | 2024.07.12 |
파이썬 클래스, init과 self에 대한 이해 (0) | 2024.07.12 |