2015-11-02 30 views
0

我在Python中很新。 我必須找到/比較一個字符串值與列表中的字典列表中存在的列表。我編寫了下面的代碼,雖然它運行良好,但我們可以用更好的方式編寫代碼。如何在Python中List的字典列表中找到值?

abc = [{'GetDriverPackInfo_OUTPUT': {'OSList': [u'Linux', u'Windows', u'Xen', u'VMware'], 'ReturnValue': [u'0'], 'Version': [u'15.07.04']}}] 

os_name = "Linux" 

for k in abc:     #['GetDriverPackInfo_OUTPUT']['OSList']: 
    if os_name in k['GetDriverPackInfo_OUTPUT']['OSList']: #== os_name: 
     print ("os_name found") 
    else: 
     print ("os_name not found") 
+0

確保每個外dict有關鍵'GetDriverPackInfo_OUTPUT'和每個內部字典都有鍵'OSList'?否則'if'語句可能會拋出異常 – Hooting

+0

將abc總是有一個'GetDriverPackInfo_OUTPUT'? – fahad

+0

@fahad:是'abc'將始終爲'GetDriverPackInfo_OUTPUT' –

回答

0
In [1]: osname in [j for j in [k['GetDriverPackInfo_OUTPUT']['OSList'] for k in abc]][0] 
Out[1]: True 

如果它返回True的OSNAME退出否則它不是。

1

我不確定這是否適合您。只有abc總是有一個'GetDriverPackInfo_OUTPUT'項目,它纔會起作用。

溫度= ABC [0] [ 'GetDriverPackInfo_OUTPUT'] [ 'OSList']

如果OS_NAME在溫度:

print "found" 

否則:

print "not found" 
相關問題