3.4 딕셔너리

3.4.2 딕셔너리로 변환하기

lol = [['a', 'b'], ['c','d'],['e','f']]
dict(lol)

{‘a’: ‘b’, ‘c’: ‘d’, ‘e’: ‘f’}

lot = [('a', 'b'), ('c','d'),('e','f')]
dict(lot)

{‘a’: ‘b’, ‘c’: ‘d’, ‘e’: ‘f’}

tol = (['a', 'b'], ['c','d'],['e','f'])
dict(tol)

{‘a’: ‘b’, ‘c’: ‘d’, ‘e’: ‘f’}

los = ['ab','cd','ef']
dict(los)

{‘a’: ‘b’, ‘c’: ‘d’, ‘e’: ‘f’}

tos = ('ab', 'cd', 'ef')
dict(tos)

{‘a’: ‘b’, ‘c’: ‘d’, ‘e’: ‘f’}

3.4.3 항목 추가/변경하기:[key]

some_pythons = {
'Graham' : 'Chapman',
'John' : 'Cleese',
'Eric': 'Idle',
'Terry':'Gilliam',
'Michael': 'Palin',
'Terry': 'Jones'
}

dict의 키 값을 유일해야하며 유일 하지 않을경우 뒤쪽의 값이 우선시 된다.

some_pythons

{‘Eric’: ‘Idle’, ‘Graham’: ‘Chapman’, ‘John’: ‘Cleese’, ‘Michael’: ‘Palin’, ‘Terry’: ‘Jones’}

3.4.3 딕셔너리 결합하기: update()

pythons = {
'Chapman': 'Graham',
'Cleese':'John',
'Gilliam': 'Terry',
'Idle': 'Eric',
'Jones': 'Terry',
'Palin': 'Michael',
}
pythons

{‘Chapman’: ‘Graham’, ‘Cleese’: ‘John’, ‘Gilliam’: ‘Terry’, ‘Idle’: ‘Eric’, ‘Jones’: ‘Terry’, ‘Palin’: ‘Michael’}

others = { 'Marx': 'Groucho', 'Howard': 'Moe'}
pythons.update(others)
pythons

{‘Chapman’: ‘Graham’, ‘Cleese’: ‘John’, ‘Gilliam’: ‘Terry’, ‘Howard’: ‘Moe’, ‘Idle’: ‘Eric’, ‘Jones’: ‘Terry’, ‘Marx’: ‘Groucho’, ‘Palin’: ‘Michael’}

만약 병합시도중 두 딕셔너리 같은 키 값이 있을 경우 두번쨰 딕셔너리(덮어쓰는 딕셔너리)가 승리 한다.

first = {'a': 1, 'b': 2}
second = {'b': 'platpus'}
first.update(second)
first

{‘a’: 1, ‘b’: ‘platpus’}

3.4.5 키와 del로 항목 삭제하기

del pythons['Marx']
pythons

{‘Chapman’: ‘Graham’, ‘Cleese’: ‘John’, ‘Gilliam’: ‘Terry’, ‘Howard’: ‘Moe’, ‘Idle’: ‘Eric’, ‘Jones’: ‘Terry’, ‘Palin’: ‘Michael’}

3.4.6 모든 항목 삭제하기: clear()

pythons.clear()
pythons

{}

pythons = {}
pythons

{}

3.4.7 in으로 키 멤버십 테스트 하기

pythons = { 'Chapman': 'Graham', 'Cleese': 'John', 'Jones': 'Terry', 'Palin': 'Michael'}
'Chapman' in pythons

True

'Palin' in pythons

True

'Gilliam' in pythons

False

3.4.8 항목 얻기: [key]

pythons['Cleese']

‘John’

pythons['Marx']
---------------------------------------------------------------------------
KeyError
Traceback (most recent call last)
<ipython-input-99-8ba1c8293867> in <module>()
----> 1 pythons['Marx']
                                                                                                                                                                                                                                                  
KeyError: 'Marx'

예외를 얻지 않으려면 첫번째 방법으로는 in으로 키에 대한 멤버십을 검사하는것이고, 두번째는 딕셔너리의 get()함수를 이용하는 것이다. 이 함수는 딕셔너리, 키, 옵션값을 사용한다. 만약 키가 조재 하면 그 값을 얻는다 존재 하지 않으면 옵션값을 지정해서 이를 출력 할 수 있다. 기본값은 None 이다

pythons.get('Cleese')

‘John’

print(pythons.get('Marx', 'Not a python'))

Not a python

print(pythons.get('Marx'))

None

3.4.9 모든 키 얻기: keys()

signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
signals.keys()

dict_keys([‘green’, ‘yellow’, ‘red’])

list(signals.keys())

[‘green’, ‘yellow’, ‘red’]

python3 에서는 valeus()나 items()의 결과를 일반적인 리스트로 변환하기 위해 list()함수를 사용한다

3.4.10 모든 값 얻기: values()

list(signals.values())

[‘go’, ‘go faster’, ‘smile for the camera’]

3.4.11 모든 쌍의 키-값 얻기: items()

list(signals.items())

[(‘green’, ‘go’), (‘yellow’, ‘go faster’), (‘red’, ‘smile for the camera’)]

(‘green’, ‘go’)와 같이 튜플로 반환된다.

3.4.12 할당:=, 복사:copy()

signals = {'green':'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
save_signals = signals
signals['blue'] = 'confuse everyone'
save_signals

{‘blue’: ‘confuse everyone’, ‘green’: ‘go’, ‘red’: ‘smile for the camera’, ‘yellow’: ‘go faster’}

signals

{‘blue’: ‘confuse everyone’, ‘green’: ‘go’, ‘red’: ‘smile for the camera’, ‘yellow’: ‘go faster’}

리스트와 마찬가지로 딕셔너리 할당후 변경할 때 딕셔너리를 참조하는 모든 이름에 변경된 딕셔너리를 반영 그러므로 딕셔너리의 키와 값을 또다른 딕셔너리로 복사 하기 위해 copy()를 사용 해야 한다.

signals = {'green':'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
original_signals = signals.copy()
signals['blue'] = 'confuse everyone'
signals

{‘blue’: ‘confuse everyone’, ‘green’: ‘go’, ‘red’: ‘smile for the camera’, ‘yellow’: ‘go faster’}

original_signals

{‘green’: ‘go’, ‘red’: ‘smile for the camera’, ‘yellow’: ‘go faster’}

Comments