问题:
给定一组数据对,其中第一项是值,第二项是类型,根据类型进行分组。
示例:
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中文网其他相关文章!