본문 바로가기
Tech-Pyhton

[Python] collections

by redcrow 2019. 3. 27.

1. collections.Counter()



>>> import collections   # from collections import Counter

>>> my_list = ['a','z','c','a','f','q','c']

>>> result = collections.Counter(my_list)

>>> result

  

Counter({'a': 2, 'c': 2, 'z': 1, 'f': 1, 'q': 1})


>>> list(result)

  

['a', 'z', 'c', 'f', 'q']


>>> my_list2 = ['a','z','z']

>>> result.update(my_list2)

>>> result

Counter({'a': 3, 'z': 3, 'c': 2, 'f': 1, 'q': 1})


>>> list(result.values())

  

[3, 3, 2, 1, 1]

>>> list(result.items())

  

[('a', 3), ('z', 3), ('c', 2), ('f', 1), ('q', 1)]


>>> result.most_common()

[[('a', 3), ('z', 3), ('c', 2), ('f', 1), ('q', 1)]


>>> result.most_common(3)

[('a', 3), ('z', 3), ('c', 2)]



collections.Counter()를 이용한 문제풀기


두 List에서 중복된 항목은 빼기. 단 동일한 항목이 2개 있을 경우에는 하나만 빼야 함


list1 = [1,2,2,3,4,5]

list2 = [1,2,3,4,5]


이 경우 결과는 2만 나와야 함


list(set(list1)- set(list2))와 같이 차집합 연산을 이용할 경우 중복을 제외한 후 차집합연산을 하므로 결과가없음


>>> list1 = ['a','c','c','b','d']

  

>>> list2 = ['b','d','c','a']

  

>>> collections.Counter(list1)- collections.Counter(list2)

  

Counter({'c': 1})


>>> list(answer.keys())[0]

  

'c'




2. collections.OrderedDict()


예전에는 표준 딕셔러리가 입력한 순서를 보장하지 않아 collections 에 OrderedDict가 존재했었다.

파이썬 3.7 이후부터는 표준 딕셔너리도 넣은 순서대로 저장이 되므로  표준 딕셔너리를 쓰면 되겠다




'Tech-Pyhton' 카테고리의 다른 글

[Python] Map, Filter, Zip  (0) 2019.03.27
[Python] List Comprehension  (0) 2019.03.27
[Python] 유용한 파이썬 기능  (0) 2019.03.10
Python 자료형 SORT [List, Tuple, Dictionary]  (0) 2019.03.06
[Python] 문자열 함수  (0) 2019.03.03

댓글