我有一本有两把钥匙的字典(狗和猫):
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循环来控制行号,但是我不知道如何设置它。如何访问每个键的内部列表,然后访问更深的列表以找到平均值?
for keys in d:
for values in d[keys]:
(2 while loops here)我会这么做吗?
谢谢。
发布于 2014-11-24 06:00:09
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']https://stackoverflow.com/questions/27098485
复制相似问题