첫 번째 요소를 목록으로 유지하면서 각 쌍의 두 번째 요소로 데이터 쌍 집합을 그룹화해야 할 수도 있습니다. 그룹화된 결과입니다. 이는 다음 단계를 사용하여 Python에서 효율적으로 달성할 수 있습니다.
컬렉션 모듈의 defaultdict를 사용하여 사전을 생성합니다. 여기서 키는 쌍의 두 번째 요소입니다. 그런 다음 입력 목록을 반복하고 해당 키 값에 첫 번째 요소를 추가합니다.
<code class="python">import collections input = [ ('11013331', 'KAT'), ('9085267', 'NOT'), ('5238761', 'ETH'), ('5349618', 'ETH'), ('11788544', 'NOT'), ('962142', 'ETH'), ('7795297', 'ETH'), ('7341464', 'ETH'), ('9843236', 'KAT'), ('5594916', 'ETH'), ('1550003', 'ETH'), ] res = collections.defaultdict(list) for v, k in input: res[k].append(v)</code>
목록 이해를 사용하여 사전을 예상 JSON 형식으로 변환합니다.
<code class="python">result = [{'type': k, 'items': v} for k, v in res.items()]</code>
또 다른 접근 방식은 itertools.groupby를 사용하는 것이지만 입력 목록을 두 번째 요소별로 정렬해야 합니다.
<code class="python">from operator import itemgetter from itertools import groupby sorted_input = sorted(input, key=itemgetter(1)) groups = groupby(sorted_input, key=itemgetter(1))</code>
컴프리헨션을 사용하여 사전 목록을 만듭니다.
<code class="python">result = [{'type': k, 'items': [x[0] for x in v]} for k, v in groups]</code>
Python 3.7 이전에는 사전의 키 순서가 유지되지 않았습니다. 원래 순서를 유지하려면 collections.OrderedDict를 사용하세요.
<code class="python">from collections import OrderedDict res = OrderedDict() for v, k in input: if k in res: res[k].append(v) else: res[k] = [v]</code>
Python 3.7부터 일반 사전이 삽입 순서를 유지하므로 OrderedDict는 더 이상 필요하지 않습니다.
위 내용은 그룹화된 결과 내에서 첫 번째 요소를 목록으로 유지하면서 Python에서 각 쌍의 두 번째 요소로 쌍 목록을 효율적으로 그룹화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!