2014-05-01 76 views
0

我正在使用python中的字典,但似乎無法找到解決方案。在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')] 

打印篩選會給我一個新的字典:

[[<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 

感謝。

+0

你只需把你的過濾器設置回成字典:filtered_res = dict([(k,v)for k,v in res.items()if ...]),然後按照您認爲合適的方式使用該字典。 – garlon4

回答

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