문제:
첫 번째 항목이 값이고 데이터 쌍 집합이 주어졌습니다. 두 번째 항목은 유형입니다.
예:
input = [ ('11013331', 'KAT'), ('9085267', 'NOT'), ('5238761', 'ETH'), ('5349618', 'ETH'), ('11788544', 'NOT'), ('962142', 'ETH'), ('7795297', 'ETH'), ('7341464', 'ETH'), ('9843236', 'KAT'), ('5594916', 'ETH'), ('1550003', 'ETH'), ]
원하는 결과:
result = [ { 'type': 'KAT', 'items': ['11013331', '9843236'] }, { 'type': 'NOT', 'items': ['9085267', '11788544'] }, { 'type': 'ETH', 'items': ['5238761', '962142', '7795297', '7341464', '5594916', '1550003'] }, ]
해결책:
1단계: 사전 생성
2단계: 다음으로 변환 예상 형식
예제 코드:
<code class="python">from collections import defaultdict res = defaultdict(list) for v, k in input: res[k].append(v) output = [{'type': k, 'items': v} for k, v in res.items()]</code>
itertools.groupby를 사용하는 대체 솔루션:
참고: 이 접근 방식을 사용하려면 다음과 같은 입력이 필요합니다. 정렬됩니다.
예제 코드:
<code class="python">from itertools import groupby, itemgetter sorted_input = sorted(input, key=itemgetter(1)) groups = groupby(sorted_input, key=itemgetter(1)) output = [{'type': k, 'items': [x[0] for x in v]} for k, v in groups]</code>
키 순서에 대한 참고 사항:
위 내용은 질문 형식을 염두에 두고 기사에 적합한 제목은 다음과 같습니다. Python에서 유형별로 데이터 쌍을 그룹화하는 방법: `defaultdict` 및 `itertools.groupby`를 사용한 효율적인 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!