Developer_Neo
[python] 사전 만들기, 연산자, 함수, 메소드 본문
반응형
주의점
‘키’는 유일해야 함 (중복되면 안된다.)
immutable 자료형(정수, 실수, 복소수, 부울, 튜플, 문자열)만 ‘키’로 사용 수 있음
리스트 집합 사전 불가
값인 value는 모든 자료형이 될 수 있다.
사전은 집합과 함께 +, * 지원안됨
=’으로는 복사본이 생기지 않음(리스트, 튜플, 문자열, 집합)
사전으로 변환
- 크기가 2인 튜플 또는 리스트로 구성된 리스트는 사전으로 변환 가능
- 튜플과 리스트는 '키' 와 '값'으로 사용할 데이터로 구성되어야함.
>>> T = [('name', 'Alice'), ('age', 10), ('grade', 3)] >>> D1 = dict(T) >>> print(D1) {'name': 'Alice', 'age': 10, 'grade': 3} >>> area_code = [['서울','02'],['경기','031'],['인천','032']]# 크기 2인 리스트의 리스트 >>> D2 = dict(area_code) >>> print(D2) {'서울': '02', '경기': '031', '인천': '032'}
- 크기가 2인 튜플 또는 리스트로 구성된 튜플은 사전으로 변환 가능
>>> english = ((1, 'one'), (2, 'two'), (3, 'three'), (4, 'four'))# 크기 2인 튜플의 튜플 >>> D3 = dict(english) >>> print(D3) {1: 'one', 2: 'two', 3: 'three', 4: 'four'} >>> states = (['CA','California'], ['NY', 'New York']) # 크기 2인 리스트의 튜플 >>> D4 = dict(states) >>> print(D4) {'CA': 'California', 'NY': 'New York'}
- zip() 함수 이용하여 사전 생성
- zip() 함수는 인수로 두 개의 iterable 데이터를 받음. 첫 번째 인수는 ‘키’가 되고 두 번째 인수는 ‘값’이 됨.
>>> names = ['Alice', 'Bob', 'Paul', 'Cindy'] >>> ages = [10, 8, 12, 9] >>> D = dict(zip(names, ages)) # dict 함수 안에 zip함수를 넣습니다. >>> D {'Alice': 10, 'Bob': 8, 'Paul': 12, 'Cindy': 9}
- zip() 함수는 인수로 두 개의 iterable 데이터를 받음. 첫 번째 인수는 ‘키’가 되고 두 번째 인수는 ‘값’이 됨.
사전은 mutable 객체
데이터 추가, 수정 ,삭제
>>> books = {'파이썬':10, '아두이노':5, '자바':2, 'C언어':7}
#추가
>>> books['엔트리'] = 3
>>> print(books)
{'파이썬': 10, '아두이노': 5, '자바': 2, 'C언어': 7, '엔트리': 3}
#수정
>>> books['자바'] = 4
>>> print(books)
{'파이썬': 10, '아두이노': 5, '자바': 4, 'C언어': 7, '엔트리': 3}
#삭제
>>> del books['아두이노']
>>> print(books)
{'파이썬': 10, '자바': 4, 'C언어': 7, '엔트리': 3}
>>> del books
>>> print(books)
……
NameError: name 'books' is not defined
연산자
- in, not in
- del
>>> D1 = {1:'one', 5:'five', 10:'ten'}
>>> 10 in D1 # 10은 D1에 있는 키입니다.
True
>>> 'ten' in D1
False
함수
len(), max(), min(), sum(), sorted(), reversed()
함수적용이 키를 기준으로 한다
int인 정수를 기준으로 한다면 다 되지만 str인 문자열을 기준으로 한다면 sum함수는 적용 불가.
메소드
>>> dir(dict)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__',
'__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__',
'__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__',
'__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__',
'__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__',
'__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem',
'setdefault', 'update', 'values']
fromkeys(), get(), setdefault(), popitem(), keys(), items(), values() , update(), pop(), copy(), clear()
clear() | 빈사전으로 만듬 | 반환값 None |
copy() | 사전을 복사해 새로운 사전 반환(얕은 복사) | |
fromkeys(I) | iterable자료형 I에 있는 데이터들을 키로 사용한 새로운 사전을 만들어 반환 | |
get(x) | 키 x에 해당하는 값을 반환 | 반환값 None / 반환값 있음 |
items() | 사전에 있는 데이터들을 (키,값)튜플의 리스트로 가져옴 | 반환형 튜플의 리스트 |
keys() | 사전에 있는 키들을 리스트로 가져옴 | 반환형 리스트 |
values() |
사전에 있는 값들을 리스트로 가져옴 | 반환형 리스트 |
pop(x) | 키가 x인 원소의 값을 반환 없는 키인 경우 KeyError발생 |
|
popitem() | 임의의 키,값 쌍을 반환 사전이 빈경우 KeyError발생 |
|
setdefault(x) | x가 사전에 있는 키면 해당값을 반환 x가 사전에 없는 키라면 사전에 새로운 키로 추가 |
|
update() | 두 사전을 합해준다. | 반환값 None |
''' copy() 메소드 '''
>>> color_pencil = {'red':8, 'blue':5, 'green':6, 'purple':4}
>>> color_pencil2 = color_pencil.copy( )
>>> color_pencil2['green'] = 10
>>> print(color_pencil)
{'red': 8, 'blue': 5, 'green': 6, 'purple': 4}
>>> print(color_pencil2)
{'red': 8, 'blue': 5, 'green': 10, 'purple': 4}
'''fromkeys(iterable) , fromkeys(iterable,value)'''
>>> string = 'wxyz'
>>> D1 = dict.fromkeys(string)
>>> print(D1)
{'w': None, 'x': None, 'y': None, 'z': None}
>>> string2 = 'hello'
>>> D2 = dict.fromkeys(string2) # ‘l’은 한 번만 들어갑니다.
>>> print(D2)
{'h': None, 'e': None, 'l': None, 'o': None}
>>> score = [80, 90, 77, 95]
>>> D6 = dict.fromkeys(score, 0)
>>> print(D6)
{80: 0, 90: 0, 77: 0, 95: 0}
>>> temp = (23.5, 17.2, 20.7)
>>> D8 = dict.fromkeys(temp, 1)
>>> print(D8)
{23.5: 1, 17.2: 1, 20.7: 1}
''' get(키) , get(키, 키가 없을 경우에 반환하고자하는 값) '''
>>> D = {1:'one', 2:'two', 4:'four'}
>>> v = D.get(2)
>>> v2 = D[4]
>>> print(v, v2)
two four
>>> v = D.get(5)
>>> print(v)
None
>>> v = D.get(5, 'five')
>>> print(v)
five
'''setdefault(키) , setdefault(키,초기값)'''
>>> players = {'baseball':9, 'basketball':5}
>>> n = players.setdefault('basketball')
>>> print(n)
5
>>> n = players.setdefault('soccer')
>>> players
{'baseball': 9, 'basketball': 5, 'soccer': None}
>>> print(n)
None
>>> n = players.setdefault('volleyball', 6)
>>> players
{'baseball': 9, 'basketball': 5, 'soccer': None, 'volleyball': 6}
>>> print(n)
6
''' pop() popitem()'''
>>> states = {'CA':'California', 'NY':'New York'}
>>> s = states.pop('NY')
>>> states
{'CA': 'California'}
>>> print(s)
New York
>>> states = {'CA':'California', 'NY':'New York', 'OH':'Ohio'}
>>> result = states.popitem( ) # 임의의 아이템 선택하여 반환
>>> states
{'CA': 'California', 'NY': 'New York'}
>>> print(result) 삭제된 아이템은 (키,값)의 튜플로 반환
('OH', 'Ohio')
''' update '''
>>> v = {'name':'Alice', 'age':10}
>>> v.update(grade=3)
>>> print(v)
{'name': 'Alice', 'age': 10, 'grade': 3}
>>> v.update(address='Seoul', height='130')
>>> v
{'name': 'Alice', 'age': 10, 'grade': 3, 'address': 'Seoul', 'height': '130'}
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[python] 람다함수 및 파이썬 내장함수 (0) | 2022.01.16 |
---|---|
[python] 함수 정의, main문 , 지역변수와 전역변수(global키워드) (0) | 2022.01.16 |
[python] 얕은 복사 VS 깊은 복사 (0) | 2022.01.16 |
[python] 반복문 (while, for) (0) | 2022.01.16 |
[python] 집합 만들기, 연산자, 함수, 메소드 (0) | 2022.01.16 |
Comments