- 기본정의
member = {'a':1, 'b':2, 'c':3}
키가 없으면 새로 생성되고 키가 이미 존재하고 있으면 변경된다.
키는 변경불가능한 문자열, 숫자, 튜플 이여야하고 값은 임의의 객체이다
- dict() 를 이용해서 사전생성하기
dict (one=1, two=2) -> {'one':1, 'two':2}
dict ( [('one', 1), ('two', 2)]) -> (key,value)쌍으로부터 사전을 생성한다
- 일반적인사전에 값 설정
d = {}
d['a'] = 10
d[(1,2,3)] = 9
- zip()을 이용한 사전생성
keys =['1', '2', '3']
values = (1,2,3,)
zip (keys, values) -> [('1',1), ('2',2), ('3',3)]
dict (zip (keys, values)) -> 사전생성
- 함수를 값으로 사용하기
def add(a,b):
return a+b
def sub(a,b):
return a-b
action = {0:add, 1:sub}
action[0](4.5) -> add(4,5)호출과 동일
action[1](5,3) -> sub(5,3)호출과 동일
- 메쏘드
L={'a':1, 'b':2}
L.keys() -> ['a','b']
L.values() -> [1,2]
L.items() -> [('a',1), ('b', 2)]
'a' in L -> True (멤버십테스트)
사전의 복사
C = L (사전 레퍼런스 복사, 사전은 공유된다)
C = L.copy() (별도의 사전객체가 생성된다)
L.get('a') -> 'a'에대한 값을 얻는다. L['a']와 같지만 해당 key값없을때 에러가나지 않고 None을 반환한다
L.get('a',1212) -> 'a'의 키가 없을경우 1212를 반환한다
L.setdefault('a', 111) -> 'a'키를 꺼내되 없으면 111로 value를 설정하고 반환
L.popitem() -> 한아이템을 꺼낸다
L.pop('a') -> 'a'에대한 레이블을 꺼낸다 (반환값은 value값)
L.update(ph) -> ph사전을 L사전에 추가한다
L.clear() -> 사전의 모든 내용을 삭제한다
- 심볼테이블
globals() : 모든 전역영역의 심볼테이블을 반환
locals() : 모든 지역영역의 심볼테이블을 반환
모든 객체는 심볼테이블을 가지고 있다.
예) class c:
x = 10
y = 10
c.__dict__ -> {'x':10, 'y'=10, '__module__':'__main__', '__doc__': None}
- 사전 for문으로 참조하기
for key in L.keys():
print L[key]
for key in L: --> 2.2버전이상부터 사용가능
for key, value L.items():
- 사전을 리스트로 반환해서 정렬하기
L = {'one' :1, 'two':2, 'three':3}
temp = L.items()
temp.sort()
temp -> [('one',1), ('three', 3), ('two', 2) ]
숫자를 기준으로 정렬하기
temp = L.items()
temp.sort(key=lamda item:item[1])
정렬된결과를 한번만 사용할때
for key, value in sorted(L.items(), key=lamda item:item[1]):
printf key, value