python中等于列表的某一个值为真,python – 获取值等于特定值的列表中的所有元素...

本文展示了如何使用Python的defaultdict和itertools.groupby对列表进行分组,并计算每个组内数值的总和或平均值。通过实例演示了 defaultdict 和 itertools.groupby 在数据整理中的高效应用。
摘要由CSDN通过智能技术生成

这应该工作:

lst = [[3, 4.6575, 7.3725],

[3, 3.91, 5.694],

[2, 3.986666666666667, 6.6433333333333335],

[1, 3.9542857142857137, 5.674285714285714]]

# group the values in a dictionary

import collections

d = collections.defaultdict(list)

for item in lst:

d[item[0]].append(item)

# find sum of values

for key, value in d.items():

print [key] + map(sum, zip(*value)[1:])

或者,使用itertools.groupby更清洁一点:

import itertools

groups = itertools.groupby(lst, lambda i: i[0])

for key, value in groups:

print [key] + map(sum, zip(*value)[1:])

两种情况下的输出:

[1, 3.9542857142857137, 5.674285714285714]

[2, 3.986666666666667, 6.6433333333333335]

[3, 8.567499999999999, 13.0665]

如果你想计算均值而不是总和,只需定义你自己的均值函数并传递一个而不是sum函数来映射:

mean = lambda x: sum(x) / float(len(x))

map(mean, zip...)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值