gpt4 book ai didi

python - 字典理解从具有重复键值的元组列表中获取每个键项的平均值

转载 作者:行者123 更新时间:2023-12-04 08:57:54 25 4
gpt4 key购买 nike

mylist = [(0.8132195134810816, 'A'), (0.79314903781799, 'B'), (0.3931539216409497, 'A'), (0.23487952756579994, 'B'), (0.06686513021322447, 'C'), (0.008103227303653366, 'C'), (0.007403104126575008, 'D'), (-0.0041128367759631496, 'D'), (-0.005739579154553378, 'D'), (-0.008074572907817046, 'B')]
#我尝试了一些转换。注意,我可以用 for 循环来做到这一点。我想知道#there 是否有办法通过字典理解来做到这一点。当然,我可以构建一个常规的#dictionary,但希望有一系列过滤器单行。
newdict = dict()
for symbol in ['A','B','C','D']: # semesters
values = [item for item, symbol_item in mylist if symbol_item == symbol]
print (symbol, sum(values)/len(values))
newdict[symbol] = sum(values)/len(values)
#我希望有一种方法可以不列出符号
#尝试默认字典将键的值放入列表中,但这不起作用。
mydict = defaultdict(list)
mydict.update({key: (mydict[key] + [value]) for value,key in my list})

最佳答案

您可以使用 itertools.groupbystatistics.mean只要确保输入按字母排序,这里我使用了 operator.itemgetter即时获取数字和字母:

from itertools import groupby
from statistics import mean
from operator import itemgetter

mylist = [(0.8132195134810816, 'A'), (0.79314903781799, 'B'), (0.3931539216409497, 'A'), (0.23487952756579994, 'B'), (0.06686513021322447, 'C'), (0.008103227303653366, 'C'), (0.007403104126575008, 'D'), (-0.0041128367759631496, 'D'), (-0.005739579154553378, 'D'), (-0.008074572907817046, 'B')]

get_key = itemgetter(1)
get_value = itemgetter(0)
sorted_list = sorted(mylist, key=get_key)

newdict = {k: mean(map(get_value, g)) for k, g in groupby(sorted_list, get_key)}

print(newdict)
{'A': 0.6031867175610156, 'B': 0.33998466415865763, 'C': 0.03748417875843892, 'D': -0.0008164372679805064}

关于python - 字典理解从具有重复键值的元组列表中获取每个键项的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63715346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com