본문으로 바로가기
반응형

파이썬의 collection은 리스트, 튜플, 딕션어리로 구성됩니다.

리스트는 우리가 흔히 사용하는 list 이고, 튜플은 변경이 불가능한 list입니다.

set 역시 흔히 사용하는(java기준???) 자료 구조로 순서가 없고, 중복도 없는 collection 입니다.

dictionary는 key와 Map으로 구성된 형태로 다른 언어에서 흔히 말하는 Map 자료구조 입니다.


만약 검색을 해야하는 형태라면 자료구조로는 set과 dictionary가 적절합니다.

list나 튜플의 경우 순차검색을 해야 하므로 Big O 가 N 이지만, set과 dictionary는 logN으로 검색양이 많아질수록 유리해 지기 때문입니다.


표기 방법

tuple = (1,2,3)

list = [1,2,3]

set = {1,2,3}

dictionary = {1: "one", 2: "two", 3: "three"}


dict

list나 tuple을 쉽게 dictionary로 변경할 수 있습니다.
### list -> dictionary
sample1 = ["apple", "beer", "candy", "doctor"]
dict(enumerate(sample1))
결과
{0: 'apple', 1: 'beer', 2: 'candy', 3: 'doctor'}

zip

zip은 두개의 list를 key, value로 묶는 역할을 합니다.
### zip (key, value)
sample2 = ["a","b","c","d"]
dict(zip(sample2, sample1))


결과

{'a': 'apple', 'b': 'beer', 'c': 'candy', 'd': 'doctor'}


list comprehension

list 생성시 표현식을 통하여 생성할 수  있습니다.
[ 원소 반복문 조건문]

### list comprehension #1
sample1_copy = [x for x in sample1]
print(sample1_copy)

### list comprehension #2 - predicate
sample1_over_len = [x for x in sample1 if len(x) > 4]
print(sample1_over_len)

sample3 = [x*x for x in range(10) if x %2 == 0]
print(sample3)


결과

['apple', 'beer', 'candy', 'doctor']

['apple', 'candy', 'doctor']

[0, 4, 16, 36, 64]



Counter의 most_common()

list 내부에서 발생 빈도로 순서를 나열할때 유용한 함수 입니다.

### most_common()
from collections import Counter
sample4 = ["a","a","b","b","b","b","c"]

cnt = Counter(sample4).most_common()
print("cnt: " + str(cnt))

dict(cnt)


결과

cnt: [('b', 4), ('a', 2), ('c', 1)]

{'b': 4, 'a': 2, 'c': 1}


Counter를 import해야 하며, 발생 횟수에 따라 정렬해서 보여줍니다.
가공하기 편하도록 dictionary 형태로 변경하여 다시한번 출력했습니다.


반응형