딕셔너리와 튜플, 집합

딕셔너리

  • 여러 값을 저장해 두고 필요한 값을 꺼내 쓰는 기능

  • 이름표를 이용하여 값을 꺼내 사용

  • 사용할 때는 리스트와 비슷한 방식

fruit = {
    'apple': '사과',
    'grape': '포도',
    'pear': '배'
}
fruit['apple']    # 사과

딕셔너리 수정하기

추가

fruit['banana'] = '바나나'
fruit.update({ 'strawberry': '딸기' })

수정

fruit['apple'] = '사과다아'

삭제

del(fruit['apple'])
fruit.pop('pear')    # '배'

딕셔너리와 반복문

  • 리스트와 다르게 딕셔너리는 값의 순서를 지키지 않는다.

for key in fruit:
    print(key)
for value in fruit.values():
    print(value)
for key, value in fruit.itmes():
    print('{}의 뜻은 {}입니다.'.format(key, value))
for(let key in fruit){ 
    console.log(key);
    console.log(fruit[key]);
}

딕셔너리 vs 리스트

공통

리스트

딕셔너

생성

list = [1, 2, 3]

dict = { 'one': 1, 'two': 2}

호출

list[0]

dic['one']

삭제

del(list[0])

del(dic['one'])

개수 확인

len(list)

len(dict)

값 확인

2 in list

'two' in dict.keys()

전부 삭제

list.clear()

dict.clear()

차이점

리스트

딕셔너

순서

삭제시 순서가 바뀌기 때문에 인덱스에 대한 값이 바뀐다.

key로 값을 가져오기 때문에 삭제 여부와 상관없다.

결합

list1 + list2

dict1.update(dict2)

  • 만약 같은 키가 있을 경우 해당 값을 update친다!

  • 합집합의 개념으로 가야한다.

튜플 tuple

  • 튜플은 항상 괄호로 둘러싸인다. 때문에 중첩된 튜플은 올바르게 해석된다. ( ((1,2,3,), (2,3,4)) )

  • 한번 정해진 순서를 바꿀 수 없다. 불변이다.

  • 순서가 정해져있다.

    • list처럼 index로 값을 가져올 수 있다.

  • 괄호가 있게 만드는 것이 더 명시적이다.

  • len으로 길이를 알 수 있다.

  • 튜플은 값의 변경과 삭제가 불가능

tuple1 = (1,2,3,4)             # (1,2,3,4)
tuple2 = 1, 2, 3, 4            # (1,2,3,4)

mylist = [1,2,3,4]
tuple3 = tuple(mylist)         # (1,2,3,4)
tuple1 == tuple2 == tuple3     # true

튜블의 packing, unpacking

packing

  • 하나의 변수에 여러개의 값을 넣는 것

unpacking

  • 패킹된 변수에서 여러개의 값을 꺼내오는 것

c = (3,4)
d, e = c    # c의 값을 언패킹하여 d, e에 값을 넣었다.
f = d, e    # 변수 d와 e를 f에 패
e, d = d, e # 변수 값을 바꿀때 활용된다.

튜플의 활용

  • 두 변수의 값을 바꿀 때 임시변수가 필요 없다.

  • 함수의 리턴 값으로 여러 값을 전달할 수 있다.

  • 함수에 리턴 값에서 튜플을 주는 경우가 많다.

튜플을 이용한 함수의 리턴값

패킹, 언패킹이 반복문에서도 활용된다.

튜플 리스트 활용

  • enumerate를 사용하면, 튜플로 리턴된다.

  • *a 은 튜플을 쪼개는 역할을 한다.

list = [1,2,3,4,5]
for a in enumerate(list):
    print('{}번째 값: {}'.format(a[0], a[1]))
    print('{}번째 값: {}'.format(*a))

튜플 딕셔너리 활용

dict = { 'one': 1, 'two': 2, 'three': 3 }
for a in dict.items():
    print('{}번째 값: {}'.format(a[0], a[1]));
    print('{}번째 값: {}'.format(*a))

집합

  • 집합은 중복된 요소가 없는 순서없는 컬렉션이다.

  • 기본적인 용도

    • 멤버십 검사

    • 중복 엔트리 제거

  • 합집합, 교집합, 차집합, 대칭 차집합 과 같은 수학적인 연산들도 지원한다.

  • 집합을 만들 때는 중괄호나 set()함수를 사용할 수 있다.

basket = {
    'apple', 
    'orange', 
    'apple', 
    'pear', 
    'oarange', 
    'banana'
}
print(basket)      #{'orange', 'apple', 'pear', 'banana'}
'orange' in basket # True
a = set('abracadabra')
b = set('alacazam')
a        # 'a', 'r', 'b', 'c', 'd'
b        # 'a', 'l', 'c', 'z', 'm'
a - b    # a에 대한 b의 차집합 'r', 'b', 'd' 
a | b    # a와 b의 합집합 'a', 'b', 'c', 'd', 'l', 'm', 'r', 'z' 
a & b    # a와 b의 교집합 'a', 'c'
a ^ b    # a와 b의 대칭차집합 'b', 'd', 'l', 'm', 'r', 'z'

Last updated