计算Python嵌套列表中的平均值:如果元素1和2匹配,则计算元素3的平均值

计算Python嵌套列表中的平均值:如果元素1和2匹配,则计算元素3的平均值,python,list,average,Python,List,Average,我试图在不使用数据帧或平均函数的情况下计算平均值(用于实践)。我有嵌套列表,如果第一个和第二个元素匹配,我想平均内部列表的第三个元素 输入示例: mylist = [[USD, 2000, 13.40], [USD, 2000, 13.68], [USD, 2001, 13.99], [EUR, 2000, 10.50], [EUR, 2000, 11.02]] 所需输出为: avlist = [[USD, 2000, 13.54], [USD, 2001, 13.99], [EUR, 20

我试图在不使用数据帧或平均函数的情况下计算平均值(用于实践)。我有嵌套列表,如果第一个和第二个元素匹配,我想平均内部列表的第三个元素

输入示例:

mylist = [[USD, 2000, 13.40], [USD, 2000, 13.68], [USD, 2001, 13.99], [EUR, 2000, 10.50], [EUR, 2000, 11.02]] 
所需输出为:

avlist = [[USD, 2000, 13.54], [USD, 2001, 13.99], [EUR, 2000, 10.76]]
我得到的最远结果是从前2个元素中创建一个集合,并找到与原始列表的交点:

unique_list = list(set([x[0:2] for x in mylist]))
if (y for y in ([x[0:2] for x in mylist]) if y in unique_list):
   # av_list = 
然后是否可以执行类似“如果此交集为真,将my_列表中的第三个元素添加到unique_列表中的第三个元素,并除以添加的元素数”的操作


我希望问题是清楚的

首先根据要用于控制平均值的键对数据进行分组:

>>> mylist = [['USD', 2000, 13.40], ['USD', 2000, 13.68], ['USD', 2001, 13.99], ['EUR', 2000, 10.50], ['EUR', 2000, 11.02]] 
>>> from collections import defaultdict
>>> mydict = defaultdict(list)
>>> for curr, year, value in mylist:
        mydict[(curr,year)].append(value)
这将为您提供要作为列表平均的数字:

>>> mydict
defaultdict(<type 'list'>, {('USD', 2000): [13.4, 13.68], ('USD', 2001): [13.99], ('EUR', 2000): [10.5, 11.02]})

你可以创建一个字典,根据你想匹配的项目键入

data = {}
for item in mylist:
     key = tuple(item[0:2])
     values = data.get(key, [])
     values.append(item[2])
     data[key] = values

# {('EUR', 2000): [10.5, 11.02], ('USD', 2000): [13.4, 13.68], ('USD', 2001): [13.99]}
然后你可以浏览字典中的每一项,计算你的平均数

for key in data:
     average = sum(data[key])/len(data[key])
     print('{}, average = {}'.format(key, average))

我想你是想把代码写得太短。把它分解成许多小任务。首先列出货币年对。然后遍历该列表,在原始列表中查找匹配项。考虑一下您可以使用哪些数据结构。
for key in data:
     average = sum(data[key])/len(data[key])
     print('{}, average = {}'.format(key, average))