PYTHON

[PYTHON] 딕셔너리(dict) 생성, 정렬, 순회

_알파카 2024. 2. 2. 15:04
728x90

딕셔너리에 관한 개념

딕셔너리 생성

dic = dict(zip(rank, attendance))
dic = dict(sorted(dic.items()))

 

딕셔너리는 원래 간단하게, 아래처럼 중괄호를 통해 생성할 수 있다. 

lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
lux
# {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}

 

혹은 dict 함수를 통해 딕셔너리를 만들 수 있는데..

  • 딕셔너리 = dict(키1=값1, 키2=값2)
  • 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))
  • 딕셔너리 = dict([(키1, 값1), (키2, 값2)])
  • 딕셔너리 = dict({키1: 값1, 키2: 값2}
##### 1번 dict 함수를 통해 키=값 형식으로 딕셔너리를 만듦
# 이때, 키에 ''(작은 따옴표)나 ""(큰 따옴표)를 사용하지 않아야 한다. 
dic1 = dict(a=1, b=2, c=3, d=4)    


##### 2번 dict에서 zip함수 이용
dic2 = dict(zip(['a', 'b', 'c', 'd'], [1, 2, 3, 4]))    # zip 함수로

##### 3번 dict 안에 리스트로 매개변수 제공
dic3 = dict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

##### 4번 dict 안에 중괄호로 딕셔너리 생성
dic4 = dict({'a': 1, 'b': 2, 'c': 3, 'd': 4})


# dic1~4 모두 
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}

 

딕셔너리 정렬

딕셔너리는 순서가 정해져있지 않기 때문에, 정렬하고 싶은 기준을 명시해줘야만 한다. 

Key를 기준으로 오름차순 & 내림차순 정렬

# 오름차순 정렬 예시
my_dict = {'b': 2, 'a': 1, 'd': 4, 'c': 3}
sorted_dict_1 = dict(sorted(my_dict.items(), key=lambda x: x[0]))
    
# 또는
sorted_dict_2 = dict(sorted(my_dict.items()))

# Key 기준으로 오름차순 정렬한 결과
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}

###########
# 내림차순 정렬 예시
my_dict = {'b': 2, 'a': 1, 'd': 4, 'c': 3}
sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[0], reverse=True))

# Key 기준으로 내림차순 정렬한 결과
# {'d': 4, 'c': 3, 'b': 2, 'a': 1}

 

딕셔너리에서 sorted() 함수를 사용하면, 자동으로 key를 이용해 정렬을 해준다. 

혹은 lambda 함수를 이용해 정렬하고 싶은 기준을 명시할 수도 있다. 

오름차순에 비해 내림차순은 reverse=True를 통해 정렬할 수 있다. 

 

my_dict.items()를 적용하면 딕셔너리의 값을 (Key, Value) 형태의 튜플로 반환을 해준다. 

 

Value를 기준으로 오름차순 & 내림차순 정렬

# 오름차순 정렬 예시
my_dict = {'b': 2, 'a': 1, 'd': 4, 'c': 3}
sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1]))

# Value 기준으로 오름차순 정렬한 결과
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}

###########
# 내림차순 정렬 예시
my_dict = {'b': 2, 'a': 1, 'd': 4, 'c': 3}
sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1], reverse=True))

# Value 기준으로 내림차순 정렬한 결과
# {'d': 4, 'c': 3, 'b': 2, 'a': 1}

 

key는 x[0]이지만, value는 x[1]을 통해 접근할 수 있다. 

 

 

딕셔너리 순회

[k for k, v in dic.items() if v is True]

 

딕셔너리 순회에는 총 4가지 방법이 있다. 

1. key를 통해 키에 직접 접근하기

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for key in dic:
	print(key)
    
# 출력값
# a
# b
# c
# d

 

2. .items()를 통해 키와 값에 접근하기

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for key, value in dic.items():
	print(key, value)
    
# 출력값
# a	1
# b	2
# c	3
# d	4

 

3. .keys()를 통해 키에 접근하기

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for key in dic.keys():
	print(key)
    
# 출력값
# a
# b
# c
# d

 

4. .values()를 통해 값에 접근하기

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for value in dic.values():
	print(value)
    
# 출력값
# 1
# 2
# 3
# 4

 

정리하자면...

키 접근 -> 딕셔너리 자체(dic), dic.keys()

값 접근 -> dic.values()

키, 값 접근 -> dic.items()

 

끄읏-!

728x90