列表中的字典值

时间:2017-03-20 20:49:08

标签: python list dictionary

我需要一些帮助,之前我以错误的方式问过这个问题。我试图为自己解决这个问题,我有一个例子,说明我的尝试但是我对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'我觉得我得到了我的列表,而且这些因素搞砸了。

我通过这样做来学习,你给予的任何帮助都有助于我的学习。

1 个答案:

答案 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()函数对它们求和。