728x90
2) Counter.items()
1. collections.Counter()
1) 입력형태
import collections
lst = ['aa', 'cc', 'dd', 'aa', 'bb', 'ee']
# 입력이 list 형식
print(collections.Counter(lst))
#dictionary 형태를 변환
>>>Counter({'aa': 2, 'cc': 1, 'dd': 1, 'bb': 1, 'ee': 1})
# 입력이 dic 형식
dic={'가': 3, '나': 2, '다': 4})
# 입력을 크기 순으로 dic dic형태로 반환
print(collections.Counter(dic)
>>>Counter({'다': 4, '가': 3, '나': 2})
# 문자 = 숫자 형태
print(collections.Counter(a=1, b=3, c=2))
>>>Counter({'b': 3, 'c': 2, 'a': 1})
# string 형태
print(collections.Counter('aaagasdgsdd'))
>>>Counter({'a': 4, 'd': 3, 'g': 2, 's': 2})
2 )관련 메소드
1) Counter.keys()
c=collections.Counter({'a': 3, 'b': 2, 'c': 4})
print(list(c.keys()))
>>>['a', 'b', 'c', 'd']
2) Counter.elements()
c=collections.Counter({'a': 3, 'b': 2, 'c': 4})
print(list(c.elements()))
>>>['a', 'a', 'a', 'b', 'b', 'c', 'c', 'c', 'c']
# 다음과 같이 정렬도 가능
print(sorted(c.elements(),revers=True))
>>>['c', 'c', 'c', 'c', 'b', 'b', 'a', 'a', 'a']
3) Counter.items()
c=collections.Counter({'a': 3, 'b': 2, 'c': 4})
print(c.items())
for key,num in c.items():
print(key,num)
dict_items([('a', 3), ('b', 2), ('c', 4)])
a 3
b 2
c 4
4) Counter.update()
c=collections.Counter({'a': 3, 'b': 2, 'c': 4})
# 원소를 추가해줌
c.update({'f':3,'c':2})
print(c)
>>>Counter({'c': 6, 'a': 3, 'f': 3, 'b': 2})
# string 형태도 가능
c.update('jkkl')
print(c)
>>>Counter({'c': 6, 'a': 3, 'f': 3, 'b': 2, 'k': 2, 'j': 1, 'l': 1})
5) Counter.most_common()
c2 = collections.Counter('apple, orange, grape')
print(c2.most_common())
>>>[('a', 3), ('p', 3), ('e', 3), (',', 2), (' ', 2), ('r', 2), ('g', 2), ('l', 1), ('o', 1), ('n', 1)]
# 상위 3개를 보여줌
print(c2.most_common(3))
>>>[('a', 3), ('p', 3), ('e', 3)]
3 )Counter 간 연산
1) Counter.subtract()
a = collections.Counter(a=4, b=2, c=0, d=-2)
b = collections.Counter(a=1, b=2, c=3, d=4)
a.subtract(b)
print(a)
>>>Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
2) +(합집합), | (합집합), - , &(교집합)
s1 = collections.Counter('apple')
s2 = collections.Counter('banana')
# 합집합
print(s1 + s2)
>>>Counter({'a': 4, 'p': 2, 'n': 2, 'l': 1, 'e': 1, 'b': 1})
print(s1|s2)
>>>Counter({'a': 3, 'p': 2, 'n': 2, 'l': 1, 'e': 1, 'b': 1})
# 차집합
print(s1-s2)
>>>Counter({'p': 2, 'l': 1, 'e': 1})
# 교집합
print(s1&s2)
>>>Counter({'a': 1})
Counter간 연산을 통해 아래 문제를 해결해보면 좋을 것 같습니다 ㅎㅎ
반응형
'파이썬' 카테고리의 다른 글
[PYTHON] zip() (0) | 2021.12.14 |
---|---|
[PYHTHON] 정규표현식 (0) | 2021.12.14 |
[PYTHON] string 관련 함수 (0) | 2021.12.11 |
[PYTHON] set() (0) | 2021.12.08 |
[PYTHON] strip([char]) (0) | 2021.12.05 |