프로그래밍/파이썬🐍

(3)처음시작하는 파이썬_[3-3튜플,셋,딕셔너리:3-8]

개발자 덕구🐾 2022. 1. 10. 23:51
728x90

튜플

-> 불변, 상수의 리스트라고 할 수 있다. <생성한 후 수정불가>

 

요소가 하나 있을 때는 마지막 요소의 뒤에도 ','를 붙인다. ()를 이용한다.

 

튜플을 출력할 때는 (괄호)( )를 포함하지만 정의할 때는 필요없다. (있어도 좋음)

 

 

한번에 여러 변수에 할당할 수 있다.

이를 튜플 언패킹이라고 한다. 

marx_tuple = ('Groucho','Chico','Harpo')
a,b,c = marx_tuple
print(a)
print(b)
print(c)

 

 


 

딕셔너리

{}를 이용한다.

 

값에 사용하는 고유한 키를 지정한다. 

딕셔너리의 키는 반드시 유일해야한다

 

만약 같은 키를 두 번 이상 사용하면 마지막 값이  승리한다. 

 

 

update() : 딕셔너리 결합

del : 키를 이용해 항목 삭제

python = {
    'Chapman' : 'Graham',
    'Cleese' : 'John'
}
others = {'Marx' : 'Groucho'}
python.update(others)
print(python)
del python['Marx']
print(python)

 

만약 결합할 딕셔너리에 같은 키값을 가지고 있는 항목이 있다면 others의 값이 승리한다. 

 

 

get() : 키가 존재하면 값을, 없으면 none을 얻는다. 옵션값을 지정할 수 있다. 

copy() : 딕셔너리의 키와 값을 또 다른 딕셔너리로 복사하기 위해서

 

items() : 딕셔너리의 모든 쌍의 키와 값을 얻기 위해서 이용 -> 각각의 키와 값은 튜플로 반환

python = {
    'Chapman' : 'Graham',
    'Cleese' : 'John'
}
print(list(python.items()))

 

 

 


 

 

값은 버리고 키만 남은 딕셔너리 (각 키는 유일해야한다) (딕셔너리와 마찬가지로 순서X)

존재여부를 판단하기 위해서 셋을 사용한다. 

 

 

set(), 중괄호({})에 콤마로 구분된 값이 하나이상!! : 셋의 생성

 

{}는 딕셔너리가 먼저 등장해서 중괄호를 이미 차지하고 있기때문에

{}을 이용해 set을 만들고 싶을 때는 안에 원소를 하나 이상 넣어주어야한다.

 

<drinks>

drinks = {
    'martini' : {'vodka', 'vermounth'},
    'black russian' : {'vodka', 'kahlua'},
    'white russian' : {'cream', 'kahlua','vodka'},
    'manhattan' : {'rye', 'vermounth','bitters'},
    'screwdriver' : {'vodka', 'orange juice'}
}

 

1. vermounth 또는 orange juice가 들어있는 술 이름을 반환

for name, content in drinks.items() :
    if content & {'vermounth','orange juice'} :
        print(name)

items는 튜플형식으로 반환하기에 이름은 name, 내용은 content에 저장된다. 

&는 교집합을 찾기에 해당 content와 {}내부의 내용을 비교하여 교집합이 있으면 참이되어

이름을 반환한다.

 

 

2. vodka는 들어있지만 cream이나 vermouth는 들어있지 않는 술 이름 

for name, content in drinks.items() :
    if 'vodka' in content and not content & {'cream','vermounth'} :
        print(name)

 

인터섹션(교집합)

 

유니온(합집합)

 

디퍼런스(차집합)

bruss = drinks['black russian']
wruss = drinks['white russian']

print(bruss & wruss)
print(bruss.intersection(wruss))
print(bruss | wruss)
print(bruss.union(wruss))
print(bruss - wruss)
print(bruss.difference(wruss))

 

 

 

3-6 자료구조 비교하기

리스트  : 대괄호

튜플 : 콤마

딕셔너리 : 중괄호 

 

리스트와 튜플은 정수오프셋을 사용하고, 딕셔너리는 키를 이용한다.

 

딕셔너리의 키는 불변하기에 리스트, 딕셔너리, 셋은 될 수 없다.

그러나 튜플은 가능하다. 

 

 

3장 연습문제

 

 

 

 

 

책에 오타가 조금씩있다!

반응형