基于值模式

时间:2017-03-13 20:37:54

标签: 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')

由于

2 个答案:

答案 0 :(得分: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')}]

答案 1 :(得分: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')}