회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


Python 7강 - 사전

artsone | 2007.10.30 03:26 | 조회 2870
Python07.asf

Python 7강
사전

1. 사전 객체의 기초 연산
2. 사전 객체의 메쏘드
3. 심볼 테이블
4. 사전을 for문으로 참조하기




1. 사전 객체의 기초 연산

python7-1.jpg

#사전
키(key)를 이용해 값(value)를 참조하는 메모리 구조

#사전 만들기
>>> member = {'basketball':5, 'soccer':11, 'baseball':9}
>>> member['baseball'] #키를 입력하여 검색
9

#연산
>>> member['volleyball'] = 7 #새 값 설정
>>> member['volleyball']
7
>>> member['volleyball'] = 6 #변경
>>> member['volleyball']
6
>>> member = {'soccer':11, 'volleyball':6, 'baseball':9, 'basketball':5}
>>> len(member) #길이-데이터 수
4
>>> del member['basketball'] #삭제
>>> print member
{'soccer': 11, 'baseball': 9, 'volleyball': 6}

#키와 값
키는 변경 불가능형 객체이어야 한다.
키 값이 변경되면 hash기법에 따라 저장 위치가 달라져야 하므로 허용하지 않는다.
기본 객체로는 문자열, 숫자, 튜플이 가능
리스트와 사전은 키가 될 수 없다
값은 임의의 객체일 수 있다
예제
함수를 값으로 활용한 예

>>> def add(a, b): #add 함수 만들기
return a + b

>>> def sub(a, b): #sub 함수 만들기
return a - b

>>> action = {0:add, 1:sub} #사전 정의
>>> action #출력
{0: , 1: }
>>> add #add출력,

>>> action[0] #add출력

>>> sub #sub출력,

>>> action[1] #sub출력

>>> action[0] (3, 4) #add 연산
7
>>> action[1] (5, 4) #sub 연산
1


2. 사전 객체의 메쏘드
#가장 많이 사용하는 메쏘드
keys() - 키 리스트
values() - 값 리스트
items() - (키, 값) 리스트 (튜플)
has_key(key) - 키가 있는가?

>>> D = {'one':1, 'two':2, 'three':3} #사전 정의
>>> D
{'three': 3, 'two': 2, 'one': 1}
>>> D.keys() #키 리스트
['three', 'two', 'one']
>>> D.values() #값 리스트
[3, 2, 1]
>>> D.items() #(키, 값) 리스트
[('three', 3), ('two', 2), ('one', 1)]
>>> D.has_key('one') #키 있는지 검색
True
>>> D['four'] #키가 없으면 키에러 발생

Traceback (most recent call last):
File "", line 1, in
D['four']
KeyError: 'four'

>>> if D.has_key('four'): #만약 four가 있다면 four를 출력
print D['four']


#기타 메쏘드
clear() - 항목 모두 삭제
copy() - 사전 복사
get(key[,x]) - 키가 없으면 x를 취한다
setdefault(key[,x]) - 키가 없으면 x를 키에 설정한다.
update(D) - D사전의 내용으로 갱신
popitem() - (키, 값)을 리턴하고 항목 제거


>>> D.clear() #사전 클리어
>>> D
{}
>>> D = {'one':1, 'two':2, 'three':3}
>>> E = D.copy() #사전 복사
>>> D
{'three': 3, 'two': 2, 'one': 1}
>>> E
{'one': 1, 'three': 3, 'two': 2}
>>> E['one'] = 'hana'
>>> E #복사한 E는 D와 다른 객체이다.
{'one': 'hana', 'three': 3, 'two': 2}
>>> D
{'three': 3, 'two': 2, 'one': 1}

>>> D.get('one') #키의 값을 출력
1
>>> D['four'] #사전에 없는 데이터가 있을 시

Traceback (most recent call last):
File "", line 1, in
D['four']
KeyError: 'four' #키에러 표시하는데
>>> D.get('four') #get()을 사용하면
>>> print D.get('four') #None이라는 데이터가 임시로 들어간다
None
>>> D.get('four', 4) #four라는 키를 입력할 때 4를 출력한다.
4
>>> D #하지만 사전에 정의되지 않는다.
{'three': 3, 'tow': 2, 'one': 1}

>>> D.setdefault('four') #get()과 비슷하나
>>> D #사전 정의가 가능하고
{'four': None, 'three': 3, 'tow': 2, 'one': 1}
>>> D.setdefault('five', 5) #키의 값도 넣을 수 있다.
5
>>> D
{'four': None, 'three': 3, 'five': 5, 'tow': 2, 'one': 1}

>>> E
{'one': 'hana', 'three': 3, 'tow': 2}
>>> D
{'four': None, 'three': 3, 'five': 5, 'tow': 2, 'one': 1}
>>> E.update(D) #D의 데이터가 업데이트 된다.
>>> E
{'tow': 2, 'three': 3, 'one': 1, 'four': None, 'five': 5}
>>> D.popitem() #사전에서 꺼내고 삭제한다.
('four', None)
>>> D #0번째 데이터가 없어졌다.
{'three': 3, 'five': 5, 'tow': 2, 'one': 1}
>>> key, value = D.popitem() #popitem()을 이용해 키와 값을 따로 뽑을 수가 있다
>>> key
'three'
>>> value
3
>>> D #역시 사전에서 제거가 됐다.
{'five': 5, 'tow': 2, 'one': 1}

#키 멤버십 확인(v2.2)
'jack' in phoneDict

2.2부터 in이라는 연산자 사용가능

>>> D
{'five': 5, 'tow': 2, 'one': 1}
>>> 'fine' in D #D안에 fine이 없으므로 False
False
>>> 'finf' in D
False
>>> 'five' in D #five가 있으므로 True
True

>>> D.has_key('five') #has_key()로도 확인 가능하다.
True


11:20
3. 심볼 테이블
#심볼 테이블이란?
심볼(이름)에 대한 값이 저장된 테이블
a = 1, B = 20
심볼 테이블이 사전에 직접적으로 표현 할 수 있는 자료
----------
| a | 1 |
| B | 20 |
----------

전역/진역 심볼 테이블
globals() - 전역 영역 심볼 테이블
locals() - 지역 영역 심볼 테이블

f, g는 함수 local, 이외 영역은 global
----------
| → global 영역
| f---
| | → local 영역
| ----
| → global 영역
| g---
| | → local 영역
| ----
| → global 영역
|---------

>>> globals()
{'__builtins__': , '__name__': '__main__', '__doc__': None}
>>> locals()
{'__builtins__': , '__name__': '__main__', '__doc__': None}

현재 globals()와 locals()는 같다.

>>> def f(a, b):
x = a + b
y = a - b
print locals() #f()함수를 지역 영역으로 지정


>>> f(1, 2)
{'y': -1, 'x': 3, 'b': 2, 'a': 1}
>>> x

Traceback (most recent call last):
File "", line 1, in
print x
NameError: name 'x' is not defined

>>> def f(a, b):
x = a + b
y = a - b
print locals() #지역 영역
print globals() #전역 영역


>>> f(1, 2)
{'y': -1, 'x': 3, 'b': 2, 'a': 1} #지역 영역
{'__builtins__': , '__name__': '__main__', '__doc__': None, 'f': } #전역 연역


객체의 심볼 테이블
__dict__ 속성
사전의 예
함수의 예

>>> class C:
a = 1
b = 2


>>> C.__dict__ #C클래스에 정의된 이름을 확인할 수 있다.
{'a': 1, '__module__': '__main__', 'b': 2, '__doc__': None}

>>> cc = C()
>>> cc.x = 1
>>> cc.y = 2
>>> cc.__dict__
{'y': 2, 'x': 1}
>>> cc.a #cc변수에 a와 b의 값도 참조 가능
1
>>> cc.b
2
>>> dir(cc) #정의한 것을 확인
['__doc__', '__module__', 'a', 'b', 'x', 'y']

>>> def f():
pass #아무것도 수행하지 않는 f()함수

>>> f.a = 2 #바로 값 입력 가능
>>> f.b = 3
>>> f.a
2
>>> f.b
3
>>> f.__dict__ #입력 값을 확인한다.
{'a': 2, 'b': 3}




4. 사전을 for문으로 참조하기
#사전을 리스트로 변환한 후 참조

>>> D = {'one':1, 'two':2, 'three':3}
>>> D
{'three': 3, 'two': 2, 'one': 1}
>>> for key in D.keys(): #for문으로 사전 참조1
print key, D[key]


three 3
two 2
one 1

>>> for key in D: #for문으로 사전 참조2
print key, D[key]


three 3
two 2
one 1

>>> items = D.items() #키 기준으로 정렬해서 출력
>>> items
[('three', 3), ('two', 2), ('one', 1)]
>>> items.sort()
>>> for k, v in items:
print k, v


one 1
three 3
two 2

>>> def icmp(x, y): #값 기준으로 정렬
return cmp(x[1], y[1])

>>> items.sort(icmp)
>>> items
[('one', 1), ('two', 2), ('three', 3)]


#예제1 - 사전에 이름과 전화번호 등록하기
- 기능 - 추가, 제거, 검색
#예제2 - 메뉴에 따른 함수 실행
- 사전 값으로 함수를 설정한 예
#책 참조(p 202-206)


Python07.asf 끝
285개(14/15페이지)
프로그래밍
번호 제목 글쓴이 조회 날짜
25 [VisualStudio] Visual Studio Express 2012 다운로드/설치 첨부파일 푸딩뱃살 2731 2013.04.06 20:12
24 [Python] DC 이효리 겔러리에서 사진 추출하기 사진 artsOne 934 2009.03.27 01:54
23 [Python] 클래스 안의 함수 실행 artsOne 2544 2012.09.20 11:54
22 [Python] 기본 함수들 artsOne 4881 2012.09.12 15:39
21 [Python] Config Parser artsOne 2264 2012.08.28 13:55
20 [Python] win32 오픈오피스 실행 artsOne 2154 2012.08.01 17:38
19 [Python] 문자열의 기호들을 출력하기 artsOne 2867 2009.04.17 11:59
18 [Python] python 자료형 / 자료형 출력 artsOne 3393 2009.03.30 00:54
17 [Python] win32 모듈로 Excel 사용하기 artsOne 4113 2008.03.18 02:24
16 [Python] 용어 정리 artsone 3565 2008.02.26 23:11
15 [Python] Python 9강 - 파일 사진 첨부파일 artsone 9962 2007.11.03 02:59
14 [Python] Python 8강 - 객체의 복사 및 형 변환 사진 첨부파일 artsone 5217 2007.11.01 04:15
>> [Python] Python 7강 - 사전 사진 첨부파일 artsone 2871 2007.10.30 03:26
12 [Python] Python 6강 - 튜플 artsone 3138 2007.10.24 05:30
11 [Python] Python 5강 - 리스트 사진 첨부파일 artsone 7338 2007.10.23 22:13
10 [Python] Python 4강 - 문자열 사진 첨부파일 artsone 3700 2007.10.20 03:04
9 [Python] Python 3강 - 수치 자료형과 연산자 사진 첨부파일 artsone 4196 2007.10.18 17:01
8 [Python] Python 2강 - 파이썬 문과 기본 자료형 사진 첨부파일 artsone 5314 2007.10.15 02:25
7 [Python] Python 1강 - 파이썬이란? artsOne 3418 2007.10.11 23:36
6 [Python] [스크랩] Python은 무엇인가? artsone 1998 2008.02.26 16:20