通过特定键在python中对字典值进行求和

时间:2017-06-17 08:53:32

标签: python dictionary sum

我有以下名为'资产'的词典列表:

empoyees/1/contracts/new

我想总结所有可能技术的'细胞'(有> 50)。我已经看了很多问题,但是我找不到任何基于字符串变量的和数值。

我知道如何在Pandas中轻松完成这项工作,但我正在寻找一种纯粹的python解决方案。

编辑:鉴于反馈,我对问题和数据做了一些更改。对于每个邮政编码扇区,所需的输出将具有技术的单元数量:

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"
}
]

3 个答案:

答案 0 :(得分:3)

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

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

# or

import operator

cells = map(operator.itemgetter('cells'), assets)

然后使用内置的sum函数对它们求和:

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

答案 1 :(得分:1)

一线解决方案:

contact = InputPhoneContact(client_id = 0, phone = "+12345678", first_name="ABC", last_name="abc")

result = client.invoke(ImportContactsRequest([contact], replace=True))

答案 2 :(得分:0)

您需要检索字典的特定列并进行总结。

count =0
for i in assets:
    count = count + i['cells']

<强> >>Demo<<