'사전'에 해당되는 글 1건

  1. 2008.03.20 사전

사전

|

- 기본정의
   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
  

And
prev | 1 | next