You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将元组列表按患者分组并聚合对应就诊记录为列表

Python 实现患者就诊记录分组方案

方法1:使用 collections.defaultdict 实现(推荐,简洁易读)

这是Python中处理分组需求最常用的实现方式,性能和可读性都较好:

from collections import defaultdict

# 输入示例
input_list = [(patient1, visit), (patient2, visit), (patient1, visit)]

# 初始化分组字典,默认值为空列表
group_dict = defaultdict(list)
for patient, visit in input_list:
    group_dict[patient].append(visit)

# 转换为要求的元组列表格式
output = list(group_dict.items())

执行后output就符合你需要的[(patient1, [visit, visit]), (patient2, [visit])]格式。

方法2:使用functools.reduce实现(适配你参考JS reduce的思路)

如果你想沿用类似JavaScript的reduce思路实现,Python中可以用functools.reduce完成:

from functools import reduce
from collections import defaultdict

# 输入示例
input_list = [(patient1, visit), (patient2, visit), (patient1, visit)]

# reduce实现分组
group_dict = reduce(
    lambda acc, item: acc[item[0]].append(item[1]) or acc,
    input_list,
    defaultdict(list)
)

# 转换为要求的元组列表格式
output = list(group_dict.items())

这里的lambda逻辑和JS reduce的回调逻辑一致:acc是累计的分组字典,每遍历一个元素就把就诊记录追加到对应用户的列表中,最终返回累计字典。

补充说明

  • Python 3.7及以上版本中,字典默认保留插入顺序,最终输出的患者顺序和你输入中首次出现的患者顺序一致;如果使用更低版本且需要保序,可以将defaultdict(list)替换为OrderedDict(),需提前从collections导入OrderedDict。
  • 如果患者标识是不可哈希的类型(比如列表),需要先转为可哈希类型(比如元组)再作为字典的key使用。

内容的提问来源于stack exchange,提问作者Israel kusayev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:27:03