首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从字典值中的嵌套列表中查找列的平均值

从字典值中的嵌套列表中查找列的平均值
EN

Stack Overflow用户
提问于 2014-11-24 05:39:50
回答 2查看 587关注 0票数 1

我有一本有两把钥匙的字典(狗和猫):

代码语言:javascript
运行
复制
d = {'dog': [['4.1', '7.0', 'dog'], ['1.2', '3.4', 'dog']], 'cat': [['1', '8.2', '5.501', 'cat'], ['6.5', '8', '9.1', 'cat']]}

我需要找到每个键的值的嵌套列表的平均值。例如,对于狗,我需要找到平均4.1和1.2,以及7.0和3.4。

我遇到的问题是嵌套列表将数字作为字符串。我想我需要一个外部while循环来控制列号,然后需要一个内部while循环来控制行号,但是我不知道如何设置它。如何访问每个键的内部列表,然后访问更深的列表以找到平均值?

代码语言:javascript
运行
复制
for keys in d:
    for values in d[keys]:
        (2 while loops here)

我会这么做吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-24 05:50:42

假设字典中的值只包含两个元素的列表(同样是列表):

代码语言:javascript
运行
复制
d = {'dog': [['4.1', '7.0', 'dog'], ['1.2', '3.4', 'dog']], 'cat': [['1', '8.2', '5.501', 'cat'], ['6.5', '8', '9.1', 'cat']]}

avg_dict = {}
for key in d:
    avg_list = []
    i = 0
    while (i < len(d[key][0]) - 1):
        avg_list.append((float(d[key][0][i]) + float(d[key][1][i])) /2.0)
        i += 1
    avg_dict[key] = avg_list

print(avg_dict)
票数 1
EN

Stack Overflow用户

发布于 2014-11-24 06:00:09

代码语言:javascript
运行
复制
def calc_avg(animal):
    vals = [map(float, animal[i][:-1]) for i in range(len(animal))]
    animal_name = animal[0][-1:]
    return map(lambda tup: sum(tup)/len(tup), zip(*vals)) + animal_name    


d = {'dog': [['4.1', '7.0', 'dog'], ['1.2', '3.4', 'dog']], 'cat': [['1', '8.2', '5.501', 'cat'], ['6.5', '8', '9.1', 'cat']]}
print calc_avg(d['cat']) # prints [3.75, 8.1, 7.3004999999999995, 'cat']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27098485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档