Notice
Recent Posts
Recent Comments
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
10-11 02:09
Archives
Today
Total
관리 메뉴

Developer_Neo

[python] 사전 만들기, 연산자, 함수, 메소드 본문

프로그래밍/Python

[python] 사전 만들기, 연산자, 함수, 메소드

_Neo_ 2022. 1. 16. 21:33
반응형

주의점

‘키’는 유일해야 함 (중복되면 안된다.)

immutable 자료형(정수, 실수, 복소수, 부울, 튜플, 문자열)만 ‘키’로 사용 수 있음

리스트 집합 사전 불가

 

값인 value는 모든 자료형이 될 수 있다.

 

사전은 집합과 함께 +, * 지원안됨

 

=’으로는 복사본이 생기지 않음(리스트, 튜플, 문자열, 집합)

 

 

사전으로 변환

  1. 크기가 2인 튜플 또는 리스트로 구성된 리스트는 사전으로 변환 가능
    1. 튜플과 리스트는 '키' 와 '값'으로 사용할 데이터로 구성되어야함. 
    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. 크기가 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'}​
     
  3. zip() 함수 이용하여 사전 생성
    1. 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}​

사전은 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

연산자

  1. in, not in
  2. 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'}
반응형
Comments