member = {'basketball': 5, 'soccer': 11, 'baseball': 9}
print(member['baseball']) # 검색
9
member = {'basketball': 5, 'soccer': 11, 'baseball': 9}
member['volleyball'] = 7 # 새로운 아이템 설정
member['volleyball'] = 6 # 변경
print(member)
print(len(member)) # 아이템의 개수 반환
{'basketball': 5, 'soccer': 11, 'baseball': 9, 'volleyball': 6} 4
사전을 출력하면 각 아이템들이 임의의 순서로 출력된다.
내부적으로 키 내용에 대해 해쉬(Hash) 기법을 사용
키와 값 매핑에 대한 아이템을 삭제할 때에는 del과 함께 키값 명시
member = {'basketball':5, 'soccer':11, 'baseball':9}
del member['basketball'] # 항목 삭제
print(member)
{'soccer': 11, 'baseball': 9}
d = {}
d['str'] = 'abc'
d[1] = 4
d[(1,2,3)] = 'tuple'
print(d)
{'str': 'abc', 1: 4, (1, 2, 3): 'tuple'}
d[[1,2,3]] = 'list' # 리스트는 키가 될 수 없다.
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-4-a8b7e032e408> in <module>() ----> 1 d[[1,2,3]] = 'list' # 리스트는 키가 될 수 없다. TypeError: unhashable type: 'list'
d[{1:2}] = 3 # 사전은 키가 될 수 없다.
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-5-46e7a9ed975f> in <module>() ----> 1 d[{1:2}] = 3 # 사전은 키가 될 수 없다. TypeError: unhashable type: 'dict'
def add(a, b):
return a + b
def sub(a, b):
return a - b
action = {0: add, 1: sub} # 함수 이름을 사전의 값으로 사용
print(action[0](4, 5))
print(action[1](4, 5))
9 -1
action2 = {add: 1, sub: 2} # 함수 이름을 사전의 키로 사용
print(action2[add])
1
d = dict()
print(type(d))
print()
print(dict(one=1, two=2))
print(dict([('one', 1), ('two', 2)]))
print(dict({'one':1, 'two':2}))
<class 'dict'> {'one': 1, 'two': 2} {'one': 1, 'two': 2} {'one': 1, 'two': 2}
keys = ['one', 'two', 'three']
values = (1, 2, 3)
print(zip(keys, values))
print(dict(zip(keys, values)))
<zip object at 0x1067ab688> {'one': 1, 'two': 2, 'three': 3}
keys = ['one', 'two', 'three', 'four']
values = (1, 2, 3)
print(dict(zip(keys, values)))
{'one': 1, 'two': 2, 'three': 3}
keys = ['one', 'two', 'three']
values = (1, 2, 3, 4)
print(dict(zip(keys, values)))
{'one': 1, 'two': 2, 'three': 3}
keys = ['one', 'two', 'three']
values = (1, 2, 3)
print(list(zip(keys, values)))
[('one', 1), ('two', 2), ('three', 3)]
phone = {'jack': 9465215, 'jin': 1111, 'Joseph': 6584321}
print(phone.keys())
print(phone.values())
print(phone.items())
print()
print('jack' in phone) # 'jack'이 phone의 키에 포함되어 있는가?
print('lee' in phone)
dict_keys(['jack', 'jin', 'Joseph']) dict_values([9465215, 1111, 6584321]) dict_items([('jack', 9465215), ('jin', 1111), ('Joseph', 6584321)]) True False
phone = {'jack':9465215, 'jin':1111, 'Joseph':6584321}
p = phone # 사전 레퍼런스 복사. 사전 객체는 공유된다.
phone['jack'] = 1234 # phone을 변경하면
print(phone)
print(p) # p도 함께 변경된다.
print()
ph = phone.copy() # 사전복사. 별도의 사전 객체가 마련된다.
phone['jack'] = 1111 # phone을 바꿔도
print(phone)
print(ph) # ph는 바뀌지 않는다.
{'jack': 1234, 'jin': 1111, 'Joseph': 6584321} {'jack': 1234, 'jin': 1111, 'Joseph': 6584321} {'jack': 1111, 'jin': 1111, 'Joseph': 6584321} {'jack': 1234, 'jin': 1111, 'Joseph': 6584321}
phone = {'a': [1,2,3], 'b': 4}
phone2 = phone.copy()
print(phone)
print(phone2)
print()
phone['b'] = 100
print(phone)
print(phone2)
print()
phone['a'][0] = 100
print(phone)
print(phone2)
{'a': [1, 2, 3], 'b': 4} {'a': [1, 2, 3], 'b': 4} {'a': [1, 2, 3], 'b': 100} {'a': [1, 2, 3], 'b': 4} {'a': [100, 2, 3], 'b': 100} {'a': [100, 2, 3], 'b': 4}
ph = {'jack': 9465215, 'jin': 1111, 'Joseph': 6584321}
print(ph.get('jack')) # 'jack'에 대한 값을 얻는다. ph['jack']과 같다.
print(ph.get('gslee')) # 'gslee'에 대한 값을 얻는다. 값이 없는 경우 None반환
9465215 None
ph = {'jack': 9465215, 'jin': 1111, 'Joseph': 6584321}
print(ph['gslee']) # ph['gslee']는 키가 없는 경우 예외발생
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-15-eccd6130c88a> in <module>() 1 ph = {'jack': 9465215, 'jin': 1111, 'Joseph': 6584321} ----> 2 print(ph['gslee']) # ph['gslee']는 키가 없는 경우 예외발생 KeyError: 'gslee'
ph = {'jack': 9465215, 'jin': 1111, 'Joseph': 6584321}
print(ph.get('gslee', 5284)) # 인수를 하나 더 제공하면 'gslee'가 없는 경우에 5284 리턴
print(ph) # 사전에는 변화가 없다
print()
print(ph.popitem()) # 임의의 아이템을 꺼낸다.
print(ph)
print()
print(ph.popitem()) # 임의의 아이템을 꺼낸다.
print(ph)
print()
print(ph.pop('jack')) # 키 값을 통해 해당 아이템을 지정하여 꺼낸다.
print(ph)
5284 {'jack': 9465215, 'jin': 1111, 'Joseph': 6584321} ('Joseph', 6584321) {'jack': 9465215, 'jin': 1111} ('jin', 1111) {'jack': 9465215} 9465215 {}
phone = {'jack': 9465215, 'jin': 1111, 'Joseph': 6584321}
ph = {'kim': 12312, 'lee': 9090}
phone.update(ph) # 사전 phone의 내용을 ph으로 추가 갱신
print(phone)
print()
phone.clear() # 사전의 모든 입력을 없앤다.
print(phone)
{'jack': 9465215, 'jin': 1111, 'Joseph': 6584321, 'kim': 12312, 'lee': 9090} {}
D = {'a':1, 'b':2, 'c':3}
for key in D.keys():
print(key, D[key])
a 1 b 2 c 3
D = {'a':1, 'b':2, 'c':3}
for key in D:
print(key, D[key])
a 1 b 2 c 3
for key, value in D.items():
print(key, value)
a 1 b 2 c 3
D = {'c':1, 'a':2, 'b':3}
#items = D.items()
items = list(D.items())
print(items)
print()
items.sort()
print(items)
print()
for k, v in items:
print(k, v)
[('c', 1), ('a', 2), ('b', 3)] [('a', 2), ('b', 3), ('c', 1)] a 2 b 3 c 1
참고 문헌: 파이썬(열혈강의)(개정판 VER.2), 이강성, FreeLec, 2005년 8월 29일