[python] Dictionary

Jin·2023년 12월 12일
1

이전에 네이버 블로그에 올린 글인데 내가 자주 찾아봐서 정리한다.

d = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}

라고 했을 때,

Dictionary의 메소드

d.keys() : 변수 내 모든 키 값 출력
d.values() : 변수 내 모든 벨류 값 출력
d.items() : 변수 내 모든 key-value 출력
d[key값] : 해당 key에 해당하는 value 출력
d.get(key값): 해당 key에 해당하는 value 출력
del d[key값] : 변수 내 key-value 값 삭제
d[key값] = value값: 있으면 수정, 없으면 추가
d.has_key(key값): 변수 내 해당 키 값의 존재여부 (boolean형)

d[key값]과 d.get(key값)의 차이는 에러메세지의 출력 여부이다. get은 뜨는데 아닌건 안뜨는 듯

Key값 기준으로 정렬하기

이건 비교적 쉽다. 그냥 sorted를 사용하면 됨

d = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}
d = sorted(d)
>>> ['eight', 'five', 'four', 'nine', 'one', 'seven', 'six', 'three', 'two', 'zero']
d = sorted(d, reverse = True)
>>> ['zero', 'two', 'three', 'six', 'seven', 'one', 'nine', 'four', 'five', 'eight']

그런데 list의 형태로 나온다.

d = dict(sorted(d.items())
>>> {'eight': '8', 'five': '5', 'four': '4', 'nine': '9', 'one': '1', 'seven': '7', 'six': '6', 'three': '3', 'two': '2', 'zero': '0'}

이러면 dictionary형으로 잘 나옴

Value값 기준으로 정렬하기

d = dict(sorted(d.items(), key = lambda x:x[1]))
>>> {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'}

그냥 정렬할 때는 d.items()쓰는 편이 좋을듯

여러개의 기준으로 정렬할 때

영단어 암기는 괴로워
이 문제에서 여러개 기준으로 정렬했다.

d = dict(sorted(d.items(), key= lambda x:(-x[1],-len(x[0]),x[0])))

이런 식으로 작성하면 처음에는 value값을 역순으로 정렬하고, key값의 길이를 역순으로 정렬한 뒤 마지막으로 key값을 알파벳 순으로 정렬한다.

기타

그리고 이렇게 하면

for i in d:
    print(i)

그냥 key값만 줄줄 나온다.

for i,j in d.items():
    print(i,j)

이렇게 하면 됨

profile
go-getter

2개의 댓글

comment-user-thumbnail
2023년 12월 18일

자바 해쉬맵도 다뤄주세요 !

1개의 답글