有没有一种方法可以从python字典中提取浮点值?

时间:2019-09-20 08:03:46

标签: python json dictionary

我是Python的新手,所以我仍然在尝试许多简单的事情。 我有一本具有以下结构的字典:

<class 'dict'>
{'1388534400000': {'electricity': 0.0}, '1388538000000': {'electricity': 0.0}, '1388541600000': {'electricity': 0.0},...}

我希望最终输出是'electricity'的浮点值的总和,但是第一个键('1388534400000', '1388538000000',...)会发生变化。考虑到字典不可索引,我该如何在python中做到这一点? 在从网站中提取信息并从另一个具有2个子集的字典(“元数据”和“数据”)中提取信息之后,我从json文件中获得了这本字典。

我尝试过dictionary.values(),但它返回了一个dict_values,其中包含对“ electricity”和相应的浮点值。

这是我正在使用的代码:

r = s.get(url, params=args)
packages_json = r.json()
print(packages_json)
print(type(packages_json))
package_json = packages_json['data']
print(type(package_json))
print(package_json)

2 个答案:

答案 0 :(得分:3)

假设您在值中始终有一个键electricity,您可以像这样sum electricity的值

>>> d
{'1388534400000': {'electricity': 0.0}, '1388538000000': {'electricity': 0.0}, '1388541600000': {'electricity': 0.0}}
>>> sum(v['electricity'] for k,v in d.items())
0.0

或者只是

>>> sum(v['electricity'] for v in d.values())
0.0

而且,也许可以使用后者,因为我做了基准测试,

>>> import timeit
>>> timeit.timeit("sum(v['electricity'] for k,v in d.items())", setup="d={'1388534400000': {'electricity': 0.0}, '1388538000000': {'electricity': 0.0}, '1388541600000': {'electricity': 0.5}}")
0.4952311920005741
>>> timeit.timeit("sum(v['electricity'] for v in d.values())", setup="d={'1388534400000': {'electricity': 0.0}, '1388538000000': {'electricity': 0.0}, '1388541600000': {'electricity': 0.5}}")
0.4470630470004835

答案 1 :(得分:-1)

sum = 0
for key in dict:
    try:
        dict[key] + 2.04
        sum += dict[key]
    except TypeError:
        pass