我需要一些帮助,之前我以错误的方式问过这个问题。我试图为自己解决这个问题,我有一个例子,说明我的尝试但是我对python的初学者知识让我失望
我运行一个名为ret
的函数,它返回get
调用
get
是从库中导入的函数
ret = get(Period='FiveMinute',Dataset='Prod',........Stat='n')
数据以嵌套在嵌套在字典
中的列表内的字典的形式返回我运行print("get returned:{}".format(repr(ret)))
它返回:
get returned:{'attributes':, u'Datapoint': {'attributes': {}, u'Val': u'8.0, u'StartTime': u'2017-03-20T20:05:00:000z'}, {'attributes': {}, u'Val': u'10.0, u'StartTime': u'2017-03-20T20:15:00:000z'}, {'attributes': {}, u'Val': u'11.0, u'StartTime': u'2017-03-20T20:20:00:000z'}, {'attributes': {}, u'Val': u'14.0, u'StartTime': u'2017-03-20T20:25:00:000z'}]}
我知道这么做
metric = str(ret[u'Datapoint'])
print metric
获得我感兴趣的词典
{'attributes': {}, u'Val': u'8.0, u'StartTime': u'2017-03-20T20:05:00:000z'}, {'attributes': {}, u'Val': u'10.0, u'StartTime': u'2017-03-20T20:15:00:000z'}, {'attributes': {}, u'Val': u'11.0, u'StartTime': u'2017-03-20T20:20:00:000z'}, {'attributes': {}, u'Val': u'14.0, u'StartTime': u'2017-03-20T20:25:00:000z'}]
我只对密钥u'Val'
的值感兴趣,我最终想要将这些值加在一起以确定在20分钟内发生'某事'的次数并将该值传递给GUI
我的尝试如下:
for value in ret.values():
for val in values.values():
if val == "u'Val'":
print(values([u'Val']))
当我运行脚本时,我得到AttributeError: 'list' object has no attribute 'values'
我觉得我得到了我的列表,而且这些因素搞砸了。
我通过这样做来学习,你给予的任何帮助都有助于我的学习。
答案 0 :(得分:0)
这将有效:
metric = ret[u'Datapoint']
print(sum([float(elem[u'Val']) for elem in metric])) #will print 43.0 in our case
说明:
我们在列表中的所有dicts迭代称为metric,并获得u' Val' key,然后将其转换为float,(创建一个包含所有浮动u' Val'值的列表),然后使用sum()函数对它们求和。