기타
[파이썬/자료형]딕셔너리(Dictionary)
상어군
2022. 9. 7. 11:43
반응형
1. 딕셔너리란
키(key)와 값(value)로 이루어진 자료형
키에 해당하는 값을 넣어 만들 수 있다
2. 선언
2.1 빈 딕셔너리 선언
dic = {}

2.2 key와 value를 넣어서 선언
dic = {
'a':0,
'b':1,
'c':2
}

2.3 다양한 타입의 value를 넣어서 선언하기
dic = {
'int_v' : 1,
'str_v' : 'hello',
'lst_v' : [],
'lst_v2' : [1,2,3],
'tup_v' : (1,2,3)
}

3. Key/value 호출
key/value 호출 예시를 위해서 2.3항목의 딕셔너리를 사용한다고 가정함
3.1 전체 key 목록 불러오기
기본적인 반환타임은 dict_keys 형태이다
리스트형을 원하면 list()를 통해 형변환을 해야한다
# 딕셔너리.keys()
dic_keys_lst = dic.keys()
print(dic_keys_lst)
#>> dict_keys(['int_v', 'str_v', 'lst_v', 'lst_v2', 'tup_v'])
print(list(dic_keys_lst))
#>> ['int_v', 'str_v', 'lst_v', 'lst_v2', 'tup_v']
3.2 for문으로 key하나씩 받아오기
for key in dic:
print(key)

3.3 전체 value 불러오기
기본적인 반환타임은 dict_values 형태이다
리스트형을 원하면 list()를 통해 형변환을 해야한다
# 딕셔너리.values()
dic_value_lst = dic.values()
print(dic_value_lst)
#>> dict_values([1, 'hello', [], [1, 2, 3], (1, 2, 3)])
print(list(dic_value_lst))
#>> [1, 'hello', [], [1, 2, 3], (1, 2, 3)]
3.4 특정 key의 value 불러오기
전체의 값이 아닌, 특정 key를 지정해서 해당 key의 value만 불러오기
# 사용법
# dic['key이름']
# 사용 예시1
dic['lst_v2']
#>> [1,2,3]
# 사용 예시2
key_name = 'lst_v2'
dic[key_name]
#>> [1,2,3]
3.5 특정 key의 value 불러오기(불러온 값은 삭제)
전체의 값이 아닌, 특정 key를 지정해서 해당 key의 value만 불러오기
단, 이때 불러온 key는 딕셔너리에서 삭제된다
# 사용법
# dic.pop('key이름')
# 사용 예시1
dic.pop('lst_v2')
#>> [1,2,3]
# 사용 예시2
key_name = 'lst_v2'
dic.pop(key_name)
#>> [1,2,3]
# 실제로 해당 값이 원본 딕셔너리에서 삭제되는지 실험
dic = {'a':0, 'b':99}
print('before dic : ',dic)
# 특정 key 지정 후 제거
poped_v = dic.pop('b')
print('poped value : ',poped_v)
print('after dic : ',dic)
#>> before dic : {'a': 0, 'b': 99}
#>> poped value : 99
#>> after dic : {'a': 0}
4. Key 삽입,삭제,수정
4.1 key 삽입
dic = {'a':0}
print('before dic : ',dic)
# 새로운 key 생성 및 해당 키에 값 넣기
dic['new_key'] = 'this is new key'
print('after dic : ',dic)
#>> before dic : {'a': 0}
#>> after dic : {'a': 0, 'new_key': 'this is new key'}
4.2 key 삭제
dic = {'a':0, 'b':99}
print('before dic : ',dic)
# 특정 key 지정 후 제거
del(dic['b'])
print('after dic : ',dic)
#>> before dic : {'a': 0, 'b': 99}
#>> after dic : {'a': 0}
4.3 key 수정
직접 제공하는 기능은 아니지만,
앞서 배운 key 삽입과 특정 key의 value 추출 후 삭제를 이용해서 구현 가능하다
dic['new_key'] = dic.pop('old_key')
5. Value 치환/메소드사용
5.1 value 치환
key의 value는 일반 변수와 같이 새로운 값을 넣어서 치환 가능하다
dic = {'a':0, 'b':9}
print('before dic : ',dic)
#key 'a'의 value를 100으로 치환
dic['a'] = 100
#key 'b'의 value를 dic['b'] + 1 으로 치환
dic['b'] += 1
print('after dic : ',dic)
#>> before dic : {'a': 0, 'b': 9}
#>> after dic : {'a': 100, 'b': 10}
5.2 value의 메소드 사용
key의 value에 list 등의 객체가 들어가 있으면 해당 객체의 메소드를 사용 할 수 있다
dic = {
'lst_v' : [7,3,9]
}
print('origin dic : ',dic)
dic['lst_v'].append(1)
print('after append : ',dic)
dic['lst_v'].extend([10,11,12])
print('after extend : ',dic)
dic['lst_v'].sort()
print('after sort : ',dic)
#>> origin dic : {'lst_v': [7, 3, 9]}
#>> after append : {'lst_v': [7, 3, 9, 1]}
#>> after extend : {'lst_v': [7, 3, 9, 1, 10, 11, 12]}
#>> after sort : {'lst_v': [1, 3, 7, 9, 10, 11, 12]}
6. 딕셔너리 정렬하기
tmp_dic = dict(sorted(tmp_dic.items(),
key=lambda x: x[1][기준이되는 컬럼],
reverse=True))반응형