빅데이터 서비스 교육/Python

Python 딕셔너리

Manly 2022. 5. 3. 11:11
반응형

딕셔너리

  • 말그대로 사전이라는 뜻
  • people 단어에 사람이라는 뜻이 있듯이, 키값에 대한 벨류값으로 짝지어진 자료구조
  • 딕셔너리 타입은 키값은 불변, 벨류값은 변할수 있음(가변적)
  • 키와 벨류가 맵핑되어 있음
  • 순서가 없음(index 번호X)

# 딕셔너리 선언
dict1 = {'name':'sjy'}
dict2 = {1:5,2:13}     #1번 키값의 벨류는 5 , 2번 키값의 벨류는 13
dict3 = {'name':['sjy','chw','kcy','pgj'],
        'age':[25,23,20,24]}
# 딕셔너리 안의 요소 구분은 ,(콤마)
# 키와 벨류 구분은 :(콜론)

print(dict1)
print(dict2)
print(dict3)

{'name': 'sjy'}
{1: 5, 2: 13}
{'name': ['sjy', 'chw', 'kcy', 'pgj'], 'age': [25, 23, 20, 24]}

# 본인의 정보('name','age','phone')를 딕셔너리로 선언하기
info = {'name':'jm','age':'1','phone':'010-1111-1111'}
print(type(info))

<class 'dict'>    #형태는 클래스 딕셔너리

# 벨류값 접근
# 키값을 통해 접근
info['name']
info['phone'][-4:]

'010-1111-1111'   #이때 나온 값은 문자열
'1111'            #문자열 뒤 4자리만 슬라이싱

# 새로운 값 추가하기
# 성별 추가
# 없는 키값 부르기 => 대입
info['sex'] = 'male'
info

{'name': 'jm', 'age': '1', 'phone': '010-1111-1111', 'sex': 'male'}

# info 'blood' 혈액형 정보 추가하기
info['blood']='B'
info

{'name': 'jm',
 'age': '1',
 'phone': '010-1111-1111',
 'sex': 'male',
 'blood': 'B'}

# 딕셔너리 벨류값 변경
info['name']='jj'
info

# 핸드폰 번호 변경 뒷자리 1234으로 변경
info['phone'] = '010-1111-1234'
info

{'name': 'jj',
 'age': '1',
 'phone': '010-1111-1234',
 'sex': 'male',
 'blood': 'B'}

딕셔너리 관련 함수

# 키값을 보여주는 함수
# keys()
info.keys()

dict_keys(['name', 'age', 'phone', 'sex', 'blood'])


for i in info.keys():          #하나하나 info['name'] info['age'] 써서 접근하지 않고 for문 이용가능
    print(info[i])

jj
1
010-1111-1234
male
B

# 벨류값만 출력해주는 함수
# values()
info.values()

dict_values(['jj', '1', '010-1111-1234', 'male', 'B'])

# 키와 벨류를 items라는 형식으로 출력
info.items()

dict_items([('name', 'jj'), ('age', '1'), ('phone', '010-1111-1234'), ('sex', 'male'), ('blood', 'B')])

# 키와 벨류를 items라는 형식으로 출력
for i in info.items():
    print(i)        #튜플에 담고 있다

('name', 'jj')
('age', '1')
('phone', '010-1111-1234')
('sex', 'male')
('blood', 'B')

for a,b in info.items():
    print(a,b)

name jj   #위의 튜플이 각각 순서대로 a,b 에 들어온다
age 1
phone 010-1111-1234
sex male
blood B

# 딕셔너리 값 삭제
del info['sex']
info

{'name': 'jj', 'age': '1', 'phone': '010-1111-1234', 'blood': 'B'}

# 채윤 정보만 for문 활용해서 출력해보기
for i in dict3.values():
    print(i[2])
    
for i in dict3.keys():
    print(dict3[i][2])

kcy
20
kcy
20

books = [{'name':'점프투파이썬','price':20000,'at':'박응용'},
        {'name':'머신러닝','price':45000,'at':'최현우'},
        {'name':'JSP&Servlet','price':26000,'at':'박슬이'},
        {'name':'자바스크립트','price':19000,'at':'김운비'}]
# 자바스크립트 정보 출력하기
print(books[3])
# 자바스크립트 책이 있다면 그 책의 모든 정보 출력하기
for b in books:
    if '자바' in b['name']: # '자바'라는 이름의 책이 있다면 책 정보 출력
        print(b)
#키보드로 부터 입력받은 책의 정보가 있다면 출력하기(기준: 책제목)
input_name = input('검색할 책 제목 입력>>')
for b in books:
    if input_name in b['name']:
        print(b)

{'name': '자바스크립트', 'price': 19000, 'at': '김운비'}


{'name': '자바스크립트', 'price': 19000, 'at': '김운비'}


검색할 책 제목 입력>>머신
{'name': '머신러닝', 'price': 45000, 'at': '최현우'}

 

# 30000원 이상인 책 검색해보기
input_price = int(input('검색할 가격 입력>>'))
for b in books:
    if  b['price'] >= input_price:
        print(b)

검색할 가격 입력>>30000
{'name': '머신러닝', 'price': 45000, 'at': '최현우'}

 

 

반응형

'빅데이터 서비스 교육 > Python' 카테고리의 다른 글

Python 함수  (0) 2022.05.03
Python 반복문(while, for)  (0) 2022.04.29
Python 튜플  (0) 2022.04.29
Python 리스트  (0) 2022.04.29
Python 조건문  (0) 2022.04.29