기타

[파이썬/자료형]딕셔너리(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))
반응형