Python에서 특정 키로 데이터를 그룹화하려면 공통 속성을 기반으로 항목을 구성해야 합니다. 이는 다양한 방법을 통해 달성할 수 있으며 대규모 데이터 세트에 대한 효율적인 솔루션을 제공합니다. 데이터를 효과적으로 그룹화하는 방법을 살펴보겠습니다.
데이터 쌍 세트가 있고 해당 유형을 기준으로 그룹화하는 것이 목표인 시나리오를 생각해 보세요. 이를 달성하기 위해 collections.defaultdict 클래스를 활용할 수 있습니다. 누락된 키가 기본값으로 자동 초기화되는 사전을 생성하여 이러한 키에 항목을 추가할 수 있습니다.
<code class="python">from collections import defaultdict input = [ ('11013331', 'KAT'), ('9085267', 'NOT'), ('5238761', 'ETH'), ('5349618', 'ETH'), ('11788544', 'NOT'), ('962142', 'ETH'), ('7795297', 'ETH'), ('7341464', 'ETH'), ('9843236', 'KAT'), ('5594916', 'ETH'), ('1550003', 'ETH'), ] res = defaultdict(list) for v, k in input: res[k].append(v) print([{ 'type': k, 'items': v } for k, v in res.items()])</code>
출력:
[{'items': ['9085267', '11788544'], 'type': 'NOT'}, {'items': ['5238761', '5349618', '962142', '7795297', '7341464', '5594916', '1550003'], 'type': 'ETH'}, {'items': ['11013331', '9843236'], 'type': 'KAT'}]
또 다른 접근 방식은 itertools.groupby를 사용하는 것입니다. 이 기능을 사용하려면 입력을 미리 정렬해야 합니다. 지정된 키의 값이 동일한 연속 요소 그룹을 생성합니다.
<code class="python">import itertools from operator import itemgetter sorted_input = sorted(input, key=itemgetter(1)) groups = itertools.groupby(sorted_input, key=itemgetter(1)) print([{ 'type': k, 'items': [x[0] for x in v]} for k, v in groups])</code>
출력:
[{'items': ['5238761', '5349618', '962142', '7795297', '7341464', '5594916', '1550003'], 'type': 'ETH'}, {'items': ['11013331', '9843236'], 'type': 'KAT'}, {'items': ['9085267', '11788544'], 'type': 'NOT'}]
이전에 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] print([{ 'type': k, 'items': v } for k, v in res.items()])</code>
그러나 Python 3.7 이상에서는 일반 사전이 삽입 순서를 유지하므로 OrderedDict가 필요하지 않습니다.
위 내용은 특정 키를 기반으로 Python에서 데이터를 효율적으로 그룹화하는 방법과 이 작업에 사용할 수 있는 다양한 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!