2017-03-13 51 views
-3

Python字典搜索我有字典myDict与以下和值基于值图案

myDict: 
    {u'E1': (u'disabled', u'10G-CR'), 
     u'E10': (u'notconnect', u'NP'), 
     u'E11': (u'notconnect', u'NP'), 
     u'E12': (u'connected', u'10G-CR') 

我想在值作为“notconnect”来定义搜索过滤器。

那么输出将是

u'E10': (u'notconnect', u'NP') 
u'E11': (u'notconnect', u'NP') 

感谢

+1

什么阻止你这样做?无效的语法,我认为? – ForceBru

+0

主题:Python字典搜索过滤器的值。 – user2178754

+0

你的评论看起来很神秘,你能否详细说明一下? – ForceBru

回答

0

下面是一种方法。创建一个包含notconnect的密钥列表。您可以使用它来做以后需要的查找功能。

>>> filter(lambda key: d[key][0] == 'notconnect', d.keys()) 
[u'E11', u'E10'] 

备选地,使用字典理解返回的滤波的子字典。

>>> print {key : value for key, value in d.items() if value[0] == 'notconnect'} 
{u'E11': (u'notconnect', u'NP'), u'E10': (u'notconnect', u'NP')} 
+0

作品!谢谢@mrdomoboto – user2178754

+0

如果你喜欢我的回答,请随时给它一个upvote @ user2178754 – ospahiu

0

首先对字典的语法是不正确的。请参考Dictionaries

In [39]: myDict = {u'E1': (u'disabled', u'10G-CR'), 
    u'E10': (u'notconnect', u'NP'), 
    u'E11': (u'notconnect', u'NP'), 
    u'E12': (u'connected', u'10G-CR')} 

In [40]: expectedResult = [{d:myDict[d]} for d in myDict if myDict[d][0] == "notconnect"] 

In [41]: expectedResult 
Out[41]: [{u'E11': (u'notconnect', u'NP')}, {u'E10': (u'notconnect', u'NP')}]