无需Pandas GroupBy:Python字典按坐标键分组聚合
原生Python实现坐标键的字典值聚合
问题场景示例
假设你有这样的原始字典:
original_dict = { ((1, 2), 'up'): 'value1', ((1, 2), 'down'): 'value2', ((3, 4), 'left'): 'value3', ((5, 6), 'right'): 'value4', ((3, 4), 'up'): 'value5' }
纯原生字典实现(无额外依赖)
直接用普通字典遍历处理,逻辑清晰:
aggregated_dict = {} # 遍历原字典的键值对,解构出坐标和方向 for (coord, _), value in original_dict.items(): # 如果坐标未在新字典中,初始化空列表 if coord not in aggregated_dict: aggregated_dict[coord] = [] # 将对应值添加到列表 aggregated_dict[coord].append(value)
执行后得到的结果:
{(1, 2): ['value1', 'value2'], (3, 4): ['value3', 'value5'], (5, 6): ['value4']}
用collections.defaultdict简化代码(标准库原生)
如果想让代码更简洁,可以用Python标准库的defaultdict,省去判断键是否存在的步骤:
from collections import defaultdict aggregated_dict = defaultdict(list) for (coord, _), value in original_dict.items(): aggregated_dict[coord].append(value) # 可选:将defaultdict转为普通字典 aggregated_dict = dict(aggregated_dict)
两种方案都完全基于原生Python实现,不需要引入Pandas的GroupBy模块。
内容的提问来源于stack exchange,提问作者Anonymous Person
相关产品推荐
相关产品推荐

