Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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_Dictionary_Sum - Fatal编程技术网

按特定键对python中的字典值求和

按特定键对python中的字典值求和,python,dictionary,sum,Python,Dictionary,Sum,我有一个叫做“资产”的字典列表: assets = [ { "type": "site", "pcd_sector_id": 1, "cells": 3, "technology": "LTE" }, { "type": "site", "pcd_sector_id": 2, "cells": 5, "technology": "LTE-Advanced" }, { "type": "site", "pcd_sect

我有一个叫做“资产”的字典列表:

assets = [
{
    "type": "site",
    "pcd_sector_id": 1,
    "cells": 3,
    "technology": "LTE"
},
{
    "type": "site",
    "pcd_sector_id": 2,
    "cells": 5,
    "technology": "LTE-Advanced"
},
{
    "type": "site",
    "pcd_sector_id": 2,
    "cells": 3,
    "technology": "LTE"
}
]
我想对所有可能的技术的“单元”求和,它们都大于50。我看了很多问题,但我找不到任何基于字符串变量的和数值

我知道如何在Pandas中轻松实现这一点,但我正在寻找一个纯python解决方案

编辑:根据反馈,我对问题和数据做了一些更改。所需输出将具有每个邮政编码部门的按技术划分的单元数:

aggregated = [
{
"pcd_sector_id": 1,
"LTE": 3,
"LTE-Advanced": 0
}
{
"pcd_sector_id": 2,
"LTE": 3,
"LTE-Advanced": 5
}
]

您要做的是首先检索单个列表中的所有单元格项:

cells = [d['cells'] for d in assets]

# or

import operator

cells = map(operator.itemgetter('cells'), assets)
然后使用内置的求和函数求和:

sum(d['cells'] for d in assets)

# or

sum(map(operator.itemgetter('cells'), assets))
这两种方法都适用于较小的列表我认为顶部的方法会更快,但底部的方法对于较大的列表肯定更快:

$python3 -m timeit "assets = [{'cells': 1}] * 1000; import operator" "sum(d['cells'] for d in assets)"
10000 loops, best of 3: 67.4 usec per loop
$python3 -m timeit "assets = [{'cells': 1}] * 1000; import operator" "sum(map(operator.itemgetter('cells'), assets))"
10000 loops, best of 3: 47.5 usec per loop

您需要检索字典的特定列并对其进行汇总

count =0
for i in assets:
    count = count + i['cells']
>>演示单线解决方案:

>>> sum([asset['cells'] for asset in assets])

你能提供你想要的输出吗?移除外部[]。否则,将生成一个临时列表,这是不必要的。