출처 - https://wikidocs.net/16043
https://www.w3schools.com/python/ref_dictionary_clear.asp
>>> {"a" : 1, "b":2}
{'a': 1, 'b': 2}
immutable 예
>>> a = {1: 5, 2: 3} # int 사용
>>> a
{1: 5, 2: 3}
>>> a = {(1,5): 5, (3,3): 3} # tuple사용
>>> a
{(1, 5): 5, (3, 3): 3}
>>> a = { 3.6: 5, "abc": 3} # float 사용
>>> a
{3.6: 5, 'abc': 3}
>>> a = { True: 5, "abc": 3} # bool 사용
>>> a
{True: 5, 'abc': 3}
# mutable 예
>>> a = { {1, 3}: 5, {3,5}: 3} #set 사용 에러
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
>>> a = {[1,3]: 5, [3,5]: 3} #list 사용 에러
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> a = { {"a":1}: 5, "abc": 3} #dict 사용 에러
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
딕셔너리를 선언할 때는 빈 중괄호를 선언.(set도 중괄호를 이용하지만 빈 중괄호로 선언하면 type이 dict가 된다)
dict constructor을 통해서 바로 키와 값을 할당하며 선언이 가능하다.
>>> name_and_ages = [['alice', 5], ['Bob', 13]]
>>> dict(name_and_ages)
{'alice': 5, 'Bob': 13}
>>> name_and_ages = [('alice', 5), ('Bob', 13)]
>>> dict(name_and_ages)
{'alice': 5, 'Bob': 13}
>>> name_and_ages = (('alice', 5), ('Bob', 13))
>>> dict(name_and_ages)
{'alice': 5, 'Bob': 13}
>>> name_and_ages = (['alice', 5], ['Bob', 13])
>>> dict(name_and_ages)
{'alice': 5, 'Bob': 13}
for key in a:
print(key)
>>> for val in a.values():
print(val)
>>> for key, val in a.items():
print("key = {key}, value={value}".format(key=key,value=val))
dictionary의 in은 키에 한해서 동작한다.
Dictionary Methods
- clear() - 딕셔너리에 있는 모든 요소들을 삭제한다.
- copy() - 딕셔너리를 복사한다. (얕은 복사)
- fromkeys(key,val) - val은 optional. 해당 key를 가진 딕셔너리로 만들어준다.
x = ('key1', 'key2', 'key3') #val없이 사용 thisdict = dict.fromkeys(x) print(thisdict) >>{'key1':None,'key2':None,'key3':None} #val=0 thisdict = dict.fromkeys(x,0) print(thisdict) >>{'key1':0,'key2':0,'key3':0}
- get(keyname, val) - key값에 대한 value를 리턴한다.
val은 optional.(만약 특정 key가 없으면 value를 리턴하게 함)
- items() - 딕셔너리에 있는 key,value쌍을 dict_items객체로 돌려준다.
dict_items: [(key1,val1),(key2,val2)...]
- keys() - 딕셔너리에 있는 key들을 dict_keys객체로 리턴한다.
- values() - 딕셔너리에 있는 value들을 dict_values객체로 리턴한다.
- pop(key,val) -key를 가진 요소를 제거할 때 사용. key의 value를 리턴한다.
val은 option
- popitem() - 가장 최근에 삽입된 요소를 제거한다.
- setdefault(key, val) - key에 대한 value를 리턴해준다.
val은 optionsetdefault언제 사용하냐:
1. https://www.daleseo.com/python-collections-defaultdict/
2. https://wookkk.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%94%95%EC%85%94%EB%84%88%EB%A6%AC-get-setdefault- update(iterable) :주어진 값을 딕셔너리 요소로 추가한다.
7-1. key를 기준으로 정렬
ex = {..}
sorted(ex)
>>>['key1','key2','key3']
key값을 기준으로 정렬된 key list가 리턴된다.
7-2. value를 기준으로 정렬
ex={'key1':30,'key2':20,'key3':25}
sorted(ex,key= lambda x:ex[x])
>>>['key2','key3','key1']
value를 기준으로 정렬된 key list가 리턴된다.
7-3. items()를 이용하여 정렬
ex={'key1':30,'key2':20,'key3':25}
sorted(ex.items(),key= lambda x:x[0])
>>>[('key1',30),('key2':20),('key3':25)]
sorted(ex.items(),key= lambda x:x[1])
>>>[('key2',20),('key3':25),('key1':30)]
ex.items()를 이용하면 튜플의 리스트 형태로 리턴되기 때문에 x[0]으로 하면 key값, x[1]로 하면 value값을 기준으로 정렬할 수 있다.
튜플의 리스트 형태로 리턴된다.