<p>假设运行Python 3:</p>
<pre><code>def where(mainDicts, filterDict):
return [x for x in mainDicts if not filterDict.items() - x.items()]
</code></pre>
<p>引用文件:</p>
<blockquote>
<p>Keys views are set-like since their entries are unique and hashable.
If all values are hashable, so that <code>(key, value)</code> pairs are unique and
hashable, then the items view is also set-like. For set-like views, all of the operations defined for the abstract base class <em>collections.abc.Set</em> are available (for example, <code>==</code>, <code><</code>, or <code>^</code>).</p>
</blockquote>
<p>有关详细信息,请参阅<a href="https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects" rel="nofollow">Dictionary view objects</a>。
如果您需要在python2中工作,只需将<code>items()</code>替换为<a href="https://docs.python.org/2/library/stdtypes.html#dict.viewitems" rel="nofollow">^{<cd2>}</a>。在</p>
<p>示例:</p>
^{pr2}$
<p>请注意,如果您的值不可散列(请参见<a href="https://docs.python.org/3/glossary.html?highlight=hashable" rel="nofollow">Glossary</a>),则上面的方法将不起作用,但是下面的内容将</p>
<pre><code>def where(dicts, filt):
return [x for x in dicts if all(k in x and x[k] == v for k, v in filt.items())]
</code></pre>