>  기사  >  백엔드 개발  >  질문 형식을 염두에 두고 기사에 적합한 제목은 다음과 같습니다. Python에서 유형별로 데이터 쌍을 그룹화하는 방법: `defaultdict` 및 `itertools.groupby`를 사용한 효율적인 솔루션

질문 형식을 염두에 두고 기사에 적합한 제목은 다음과 같습니다. Python에서 유형별로 데이터 쌍을 그룹화하는 방법: `defaultdict` 및 `itertools.groupby`를 사용한 효율적인 솔루션

Linda Hamilton
Linda Hamilton원래의
2024-10-27 07:06:03765검색

Here's a suitable title for your article, keeping the question format in mind: 

How to Group Data Pairs by Type in Python: Efficient Solutions with `defaultdict` and `itertools.groupby`

Python Group By

문제:

첫 번째 항목이 값이고 데이터 쌍 집합이 주어졌습니다. 두 번째 항목은 유형입니다.

예:

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단계: 사전 생성

  • collections.defaultdict를 사용하여 키가 있는 사전을 생성합니다. 는 항목 유형이고 값은 값을 저장하는 목록입니다.
  • 각 데이터 쌍에 대해 해당 유형에 해당하는 목록에 값을 추가합니다.

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를 사용하는 대체 솔루션:

참고: 이 접근 방식을 사용하려면 다음과 같은 입력이 필요합니다. 정렬됩니다.

  • 유형에 따라 데이터 쌍을 정렬합니다.
  • 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 3.7 이전 버전에서는 사전에 대한 삽입 순서가 보장되지 않습니다. 입력과 순서를 일관되게 유지하려면 collections.OrderedDict를 사용하세요.
  • Python 3.7 이상에서는 사전이 기본적으로 삽입 순서를 유지합니다.

위 내용은 질문 형식을 염두에 두고 기사에 적합한 제목은 다음과 같습니다. Python에서 유형별로 데이터 쌍을 그룹화하는 방법: `defaultdict` 및 `itertools.groupby`를 사용한 효율적인 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.