글쓰는 개발자

파이썬 기초문법 6 - dict, tuple, zip 본문

Development/Python

파이썬 기초문법 6 - dict, tuple, zip

세가사 2021. 2. 14. 09:22
반응형

1. dict

사전(dictionary)는 키라고 인덱스 컬렉션과 값 컬렉션을 포함한다. 각 키는 값 하나와 연결되어 있고 키는 중복될 수 없다. dictionary를 생성하기 위해서는 dict라는 내장함수를 사용하거나 중괄호({})를 사용해서 생성한다.

empty_dict = dict() # {}
t = { 1: 'test' } # {1: 'test'}
t['one'] = 'one-text' # {1: 'test', 'one': 'one-text'}
print(t[1]) # test

사전은 중복되지 않는 키값을 직접 지정해 줄 수 있다는 장점이 있지만 print로 출력해 봤을 때 key와 value값의 순서를 예측할 수 없다. 하지만 사전에서 값을 찾을 때는 보통 key값을 입력하기 때문에 순서에 관한 것은 문제가 되지 않는다.

 

dict를 for문과 함께 사용하면 dict의 키값을 받아 올 수 있다. 하단에 dict t를 출력했을 때 순서에 상관없이 object가 key value 형태로 출력이 됬다. for문을 사용해 출력하면 무작위 키값에 의한 값 'a', 'b', 'c'가 출력되겠지만 sorted 내장함수를 사용하면 정렬된 key 값을 이용해 key의 오름차순에 따라 값을 출력할 수 있다.

t = {1: 'a', 21: 'b', 34: 'c'}
print(t) # {1: 'a', 34: 'c', 21: 'b'}
for key in sorted(t):
    print(key, t[key])
'''
1 a
21 b
34 c
'''

 

2. 튜플

튜플은 연속된 값들의 집합이다. 어떤 타입도 사용가능하고 값은 정수로 인덱싱 되기 때문에 리스트와 비슷하지만 튜플은 변경 불가능하다는 특징이 있다.

구문으로 보면 튜플은 콤마로 구분된 값들의 리스트이다. 튜플은 값을 콤마(,)로 구분해서 입력할 수 있지만 괄호로 둘러싸는 것이 일반적이다.

t1 = 'a', 'b', 'c', 'd', 'e'
t2 = ('a', 'b', 'c', 'd', 'e')
print(type(t1)) # <class 'tuple'>
print(type(t2)) # <class 'tuple'>

 

원소가 하나만 있는 튜플을 생성하고 싶다면 끝에 콤마를 넣으면 된다. 괄호 안에 값을 하나만 사용하면 튜플이 아니다. 튜플을 생성하는 또 다른 방법은 내장 함수 tuple을 사용하는 것이다.

t1 = 'a',
print(type(t1)) # <class 'tuple'>

t2 = ('a')
print(type(t2)) # <class 'str'>

t = tuple()

 

3. 튜플 할당

두 변수의 값을 교환하는 건 종종 유용하다. 일반적으로 할당문은 임시 변수를 사용해야 한다. 예를 들어 a와 b를 교환하려면 다음과 같은 코드를 사용한다.

temp = a
a = b
b = temp

 

튜플 할당은 좀 더 쉽고 직관적이다.

a, b = b, a

 

이런 튜플의 특징을 이용하면 파싱이나 값을 전달할 때 유용하다.

def parse_email(email):
	uname, domain = email.split('@')
    return uname, domain

 

4. 가변길이 인수 튜플

함수는 인수를 정해지지 않은 개수로 받을 수 있다. *로 시작하는 인자 이름은 인수들의 튜플로 수집한다. 예를들어 print_all 함수를 이용해 원하는 만큼 인수를 받아 출력할 수 있다.

def print_all(*args)
	for arg in args:
    	print(arg)

print_all(1, 2)
'''
1
2
'''
print_all(1, 2, 3)
'''
1
2
3
'''

 

5. zip 함수

zip은 두 개 이상의 시퀀스를 받아서 각 시퀀스의 원소를 하나씩 담은 튜플로 된 튜플들의 리스트를 반환하는 내장함수다. 

str = 'abc'
t = [0, 1, 2]
print(zip(str, t)) #<zip object at 0x7...>

for item in zip(str, t):
    print(item)
'''
('a', 0)
('b', 1)
('c', 2)
'''

 

6. dict와 tuple

dict에는 키 값 쌍으로 된 튜플들의 리스트를 반환하는 items라는 메서드가 있다.

d = {'a': 0, 'b': 1, 'c': 2}
t = d.items()
print(t) # dict_items([('c',2'), ('a', 0), ('b', 1)])

 

for 문을 사용해 다음과 같이 dict에서 key와 value값을 동시에 추출해 사용가능하다.

for key, value in d.items():
	print(key, value)
'''
c 2
a 0
b 1
'''
반응형