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

Python中list_of_dicts_of_lists的列向众数/中位数求解

解决方法:按位置计算众数/中位数生成目标字典

首先得把需求掰明白:我们要处理这个包含多个字典的列表,对每个相同的键(比如'a'、'b'),把所有字典里该键对应子列表的同位置元素归成一组。对每组元素,先看有没有唯一的众数——有就用众数,要是多个元素出现次数一样多(没唯一众数),就用中位数。最后把每个键对应的两个位置结果拼成列表,得到目标字典。

实现步骤

  1. 先给数据分组:把每个键对应的所有子列表的第0位、第1位元素分别收集成独立列表。比如键'a'的第0位元素集合是[1,2,2,1],第1位是[2,2,2,2]。
  2. 写个判断众数/中位数的工具函数:输入一个数值列表,先找出所有出现次数最多的元素;如果只有一个这样的元素,就返回它(众数),否则返回列表的中位数。
  3. 生成最终字典:遍历每个键,对两个位置的列表分别用上面的函数,把结果组合成列表塞进结果字典里。

完整代码实现

import statistics

def get_mode_or_median(num_list):
    # 拿到所有出现次数最多的元素(支持多个众数的情况)
    modes = statistics.multimode(num_list)
    # 只有唯一众数就返回它,否则返回中位数
    if len(modes) == 1:
        return modes[0]
    else:
        return statistics.median(num_list)

# 你的输入数据
list_of_dicts_of_lists = [
    {'a': [1,2], 'b': [3,4], 'c': [3,2], 'd': [2,5]},
    {'a': [2,2], 'b': [2,2], 'c': [1,6], 'd': [4,7]},
    {'a': [2,2], 'b': [5,2], 'c': [3,2], 'd': [2,2]},
    {'a': [1,2], 'b': [3,4], 'c': [1,6], 'd': [5,5]}
]

# 第一步:整理每个键对应的各位置元素
# 先获取所有键(默认所有字典的键都一致)
keys = list(list_of_dicts_of_lists[0].keys())
# 初始化分组容器:每个键对应两个列表,分别存第0位、第1位元素
grouped_data = {key: [[], []] for key in keys}

for d in list_of_dicts_of_lists:
    for key in keys:
        # 把当前字典中key对应子列表的两个元素分别加入分组
        grouped_data[key][0].append(d[key][0])
        grouped_data[key][1].append(d[key][1])

# 第二步:生成目标字典
median_dict_of_lists = {}
for key in keys:
    # 对两个位置的列表分别计算结果
    pos0_result = get_mode_or_median(grouped_data[key][0])
    pos1_result = get_mode_or_median(grouped_data[key][1])
    median_dict_of_lists[key] = [pos0_result, pos1_result]

print(median_dict_of_lists)
# 输出结果正好是你要的:{'a': [1.5, 2], 'b': [3, 3], 'c': [2, 4], 'd': [3, 5]}

代码细节解释

  • 数据分组:遍历每个字典,把每个键的子列表元素按位置拆分存储,这样每个键就有两个独立的元素集合,方便后续计算。
  • 工具函数:用statistics.multimode能直接拿到所有众数(Python3.8+支持),避免了手动统计次数的麻烦;如果众数不唯一,就用中位数兜底。
  • 结果生成:逐个处理每个键的两个位置集合,把计算结果拼成列表,最终得到符合要求的字典。

举个例子,键'a'的第0位元素是[1,2,2,1],1和2都出现2次(没有唯一众数),所以取中位数(1+2)/2=1.5;第1位元素全是2,众数唯一,直接用2,完美匹配期望结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:40:16