回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在为Python中的一个anagram程序使用字典。键是已排序字母的元组,值是包含这些字母的可能单词的数组:</p>
<pre><code>wordlist = {
('d', 'g', 'o'): ['dog', 'god'],
('a', 'c', 't'): ['act', 'cat'],
('a', 's', 't'): ['sat', 'tas'],
}
</code></pre>
<p>我正在使用regex来过滤列表。因此,给定<code>r't$'</code>作为过滤器,最终结果应该是:</p>
<pre><code>filtered_list = {
('a', 'c', 't'): ['act', 'cat'],
('a', 's', 't'): ['sat'],
}
</code></pre>
<p>到目前为止,我已经把它归结为两个步骤。首先,保留与表达式匹配的所有单词:</p>
<pre><code>tmp = {k: [w for w in v if re.search(r't$', w)] for k, v in wordlist.items()}
</code></pre>
<p>这给我留下了一张空名单:</p>
<pre><code>{
('d', 'g', 'o'): [],
('a', 'c', 't'): ['act', 'cat'],
('a', 's', 't'): ['sat'],
}
</code></pre>
<p>然后我需要第二个通行证来清除空名单:</p>
<pre><code>filtered_list = {k: v for k, v in tmp.items() if v}
</code></pre>
<p>我确信有一种方法可以一步到位,但我还没弄明白。有办法把它们结合起来吗?或者一个更好的方法?你知道吗</p>