Python 在字典列表中按类别查找平均值(非标准解决方案)
我试图找到一个非熊猫的解决方案来分类总结 我将此查找表作为目录列表:Python 在字典列表中按类别查找平均值(非标准解决方案),python,list,mean,Python,List,Mean,我试图找到一个非熊猫的解决方案来分类总结 我将此查找表作为目录列表: lookup_table = [ {"urban_rural": "urban", "technology": "FTTC", "speed": 50}, {"urban_rural": "rural", "technology": "FTTC", "speed": 10}, {"urban_rural": "urban", "technology": "FTTC", "speed": 30} ] 我想按类别(“城市、农村”
lookup_table = [
{"urban_rural": "urban", "technology": "FTTC", "speed": 50},
{"urban_rural": "rural", "technology": "FTTC", "speed": 10},
{"urban_rural": "urban", "technology": "FTTC", "speed": 30}
]
我想按类别(“城市、农村”和“技术”)找出“速度”的平均值,因此我得出以下结论:
lookup_table_mean_values = [
{"urban_rural": "urban", "technology": "FTTC", "speed": 40},
{"urban_rural": "rural", "technology": "FTTC", "speed": 10}
]
编辑(添加当前代码):
我不想弄脏水,但正如@Patrick Artner所要求的,我现在就在这里。目前为dict提供了一个建议答案,提供了简单循环和Iteritems选项,但是到目前为止我还不能适应dict结构列表
我很乐意使用这样的东西:
lookup_table_mean_values =[float(sum(values)) / len(values) for key, values in lookup_table .iteritems()]
输出:
[{'urban_rural': 'urban', 'technology': 'FTTC', 'speed': 40.0}, {'urban_rural': 'rural', 'technology': 'FTTC', 'speed': 10.0}]
输出:
[{'urban_rural': 'urban', 'technology': 'FTTC', 'speed': 40.0}, {'urban_rural': 'rural', 'technology': 'FTTC', 'speed': 10.0}]
详情如下:
lookup_table = [
{"urban_rural": "urban", "technology": "FTTC", "speed": 50},
{"urban_rural": "rural", "technology": "FTTC", "speed": 10},
{"urban_rural": "urban", "technology": "FTTC", "speed": 30},
]
def get_mean(dict, by_mean):
mean = 0
for j in range(0, len(dict)):
mean += dict[j][by_mean]
mean = mean / len(dict)
return mean
def foo(dict, key, value, by_mean):
temp1 = []
temp2 = []
res = []
for i in range(0, len(dict)):
if dict[i][key] == value:
temp1.append(dict[i])
else:
temp2.append(dict[i])
res.append(temp1[0])
res.append(temp2[0])
res[0][by_mean] = get_mean(temp1, by_mean)
res[1][by_mean] = get_mean(temp2, by_mean)
return res
print foo(lookup_table, 'urban_rural', 'urban', 'speed')
输出:
[{'speed': 40, 'technology': 'FTTC', 'urban_rural': 'urban'}, {'speed': 10, 'technology': 'FTTC', 'urban_rural': 'rural'}]
详情如下:
lookup_table = [
{"urban_rural": "urban", "technology": "FTTC", "speed": 50},
{"urban_rural": "rural", "technology": "FTTC", "speed": 10},
{"urban_rural": "urban", "technology": "FTTC", "speed": 30},
]
def get_mean(dict, by_mean):
mean = 0
for j in range(0, len(dict)):
mean += dict[j][by_mean]
mean = mean / len(dict)
return mean
def foo(dict, key, value, by_mean):
temp1 = []
temp2 = []
res = []
for i in range(0, len(dict)):
if dict[i][key] == value:
temp1.append(dict[i])
else:
temp2.append(dict[i])
res.append(temp1[0])
res.append(temp2[0])
res[0][by_mean] = get_mean(temp1, by_mean)
res[1][by_mean] = get_mean(temp2, by_mean)
return res
print foo(lookup_table, 'urban_rural', 'urban', 'speed')
输出:
[{'speed': 40, 'technology': 'FTTC', 'urban_rural': 'urban'}, {'speed': 10, 'technology': 'FTTC', 'urban_rural': 'rural'}]
.. 您为解决这个问题而编写的代码在哪里?这就是它的工作原理:你有代码,你有问题,我们帮助解决。如果你有一个特定的问题,考虑学习,提供代码尊重和你的例外或期望,没有得到满足你的代码,我相信这样会帮助你。我们没有编码服务,提供根据您的规格…感谢您的评论。作为SO答案的用户,当我知道答案不正确时,我很犹豫是否提供额外的行。通过发布您得到的信息,我们可以看到您尝试了什么,您尝试了什么,以及您的困境。。。您为解决这个问题而编写的代码在哪里?这就是它的工作原理:你有代码,你有问题,我们帮助解决。如果你有一个特定的问题,考虑学习,提供代码尊重和你的例外或期望,没有得到满足你的代码,我相信这样会帮助你。我们没有编码服务,提供根据您的规格…感谢您的评论。作为SO答案的用户,当我知道答案不正确时,我很犹豫是否提供额外的行。通过发布您得到的信息,我们可以看到您尝试了什么,您尝试了什么,以及您遇到了什么困难。感谢dict语法中的陷阱,现在已经在问题中更正了。感谢dict语法中的陷阱,现在问题中已经纠正了。感谢SciroCorics,这是最简洁的解决方案。感谢SciroCorics,这是最简洁的解决方案。