Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字典列表中按类别查找平均值(非标准解决方案)_Python_List_Mean - Fatal编程技术网

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,这是最简洁的解决方案。