파이썬 멀티셋(multiset)


안녕하세요 제가 파이썬으로 셋을 이용하고 있는데 멀티셋이라는 기능이 필요한데 구현을 못하겠네여... 딕셔너리 안에 있는 values들을 이용하는건데 제가 현재 set을 처음이용해 보는데 set은 중복 데이터가 있더라도 중복으로는 취급 안해주더라고여, 여기 예제 코드입니다.

loc = {'latitude' :-90.0,'longitude' : -180.0, 'timestamp': 1512531206,'name': 'SNU', \
       'keywords':["pizza", "pizza", "pasta", "pasta", "wine"]}
loc1 = {'latitude' :-90.0,'longitude' : -180.0, 'timestamp': 1512531206,'name': 'Home',  \
        'keywords':["pizza", "pasta", "pasta", "stake", "beer"]}

same = set(loc['keywords']) & set(loc1['keywords'])
all = set(loc['keywords']) | set(loc1['keywords'])


여기서의 same은 그냥 피자와 파스타만 주어집니다. 혹시 교집합처럼 피자 한번, 파스타 2번을 불러오게 할수 있는 multiset기능이 있나요?


조회수 96


Banner bitmango

1 답변


파이썬 스탠다드 라이브러리에는 멀티셋이 없는 걸로 압니다. 대신, collection 모듈Counter를 써보는게 어떤가요?

from collections import Counter

loc = {'latitude' :-90.0,'longitude' : -180.0, 'timestamp': 1512531206,'name': 'SNU', \
       'keywords':["pizza", "pizza", "pasta", "pasta", "wine"]}
loc1 = {'latitude' :-90.0,'longitude' : -180.0, 'timestamp': 1512531206,'name': 'Home',  \
        'keywords':["pizza", "pasta", "pasta", "stake", "beer"]}

intersection = Counter(loc['keywords']) & Counter(loc1['keywords'])

print(intersection)
  • 2017년 12월 11일에 작성됨
    ლ( ╹ ◡ ╹ ლ) 쭈물

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close