在python中过滤字典

时间:2014-05-01 12:24:29

标签: python dictionary key

我正在使用python中的字典,但似乎无法找到解决方案。

我的字典看起来像这样:

res = result['result']._asdict()
res.keys()                                                                                    
['EGOVMON.CRE.1.2', 'EGOVMON.PDF.03', 'EGOVMON.PDF.05', 'WCAG.PDF.14', 'EGOVMON.TITLE.1.2']

首先,我想过滤密钥。我只想要以“EGOVMON.PDF”和“WCAG.PDF”开头的密钥。这是我到目前为止所做的:

filterkeys=[v for k,v in res.items() if k.startswith('EGOVMON.PDF') or k.startswith('WCAG.PDF')]

print filterkeys会给我一个新词典:

[[<SOAPpy.Types.structType item at 140493364567432>: {'column': 1, 'line': 0, 'type':           'assertion', 'mode': 'automatic', 'result': 1.0}], [<SOAPpy.Types.structType item at 140493353171712>: {'column': 1, 'line': 0, 'type': 'assertion', 'mode': 'automatic', 'result':     0.0}]

现在这里是我被困住的地方。我不知道如何迭代这本词典。我的主要目标是使用关键'结果'及其值。

更清楚:如何输出以下内容:

EGOVMON.PDF.03  result: 1.0
WCAG.PDF.14     result: 0.0

提前致谢。

1 个答案:

答案 0 :(得分:0)

使用说明

filterkeys=[v for k,v in res.items() if k.startswith('EGOVMON.PDF') or k.startswith('WCAG.PDF')]

您正在生成值列表,而不是键列表。它应该是......

filterkeys=[k for k,v in res.items() if k.startswith('EGOVMON.PDF') or k.startswith('WCAG.PDF')]

要获取字段“结果”的值,请从res词典中读取...

for k in filterkeys:
    print(k, res[k]['result'])   #with the formatting you need