擅长:python、mysql、java
<p>我相信你正在处理一个类似于下面的结构</p>
<pre><code>sourceDataDict = [
{'spectrum':1,
'peakflux':10,
'morphology':'simple'
},
{'spectrum':2,
'peakflux':11,
'morphology':'comlex'
},
{'spectrum':3,
'peakflux':12,
'morphology':'simple'
},
{'spectrum':4,
'peakflux':13,
'morphology':'complex'
}
]
</code></pre>
<p>你可以用列表理解来做类似的事情</p>
^{pr2}$
<p>使用itertools.ifilter,您可以获得类似的结果</p>
<pre><code>>>> list(itertools.ifilter(lambda e:e.get('morphology',None) == 'complex', sourceDataDict))
[{'morphology': 'complex', 'peakflux': 13, 'spectrum': 4}]
</code></pre>
<p>请注意,使用get而不是索引是为了确保即使键“形态学”不存在,功能也不会失败。如果它确实存在,您可以将上面的内容重写为</p>
<pre><code>>>> [e for e in sourceDataDict if e['morphology'] == 'complex']
[{'morphology': 'complex', 'peakflux': 13, 'spectrum': 4}]
>>> list(itertools.ifilter(lambda e:e['morphology'] == 'complex', sourceDataDict))
[{'morphology': 'complex', 'peakflux': 13, 'spectrum': 4}]
</code></pre>