回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个字典,我想用另一个字典过滤('过滤选项'显示大约一半了这篇文章)与多个项目。我可以为一个条目而不是整个词典找到答案…我已经找了一段时间了,但是其他的答案只针对一个条目的过滤器(通过词典理解很好地解决了这个问题)</p>
<p>这是我到目前为止所做的单项字典过滤器,即</p>
<pre><code>filter_options = {
'Attack': 25}
for kfo, vfo in filter_options.iteritems():
for kp, vp in pokers.iteritems():
if vp[kfo] >= vfo:
print pokedex[kp]
</code></pre>
<p>它的工作,但我不能找出它来过滤多个项目</p>
<p>这是这本词典的删节版本</p>
<pre><code>pokedex = {1: {'Attack': 49.0,
'Defense': 49.0,
'HP': 45.0,
'Name': 'Bulbasaur',
'PokedexNumber': 1.0,
'SpecialAttack': 65.0,
'SpecialDefense': 65.0,
'Speed': 45.0,
'Total': 318.0,
'Type': 'GrassPoison'},
2: {'Attack': 62.0,
'Defense': 63.0,
'HP': 60.0,
'Name': 'Ivysaur',
'PokedexNumber': 2.0,
'SpecialAttack': 80.0,
'SpecialDefense': 80.0,
'Speed': 60.0,
'Total': 405.0,
'Type': 'GrassPoison'},
3: {'Attack': 82.0,
'Defense': 83.0,
'HP': 80.0,
'Name': 'Venusaur',
'PokedexNumber': 3.0,
'SpecialAttack': 100.0,
'SpecialDefense': 100.0,
'Speed': 80.0,
'Total': 525.0,
'Type': 'GrassPoison'}}
# Only filter based on parameters passed
filter_options = {
'Attack': 25,
'Defense': 30,
'Type': 'Electric'
}
</code></pre>
<p>例如,返回攻击大于等于25,防御大于等于30,类型大于等于“电气”的记录
还可以预期其他参数也可以传递,如“specialatack”、“Speed”等</p>
<p>输出示例:</p>
<pre><code>[{'Attack': 30.0,
'Defense': 50.0,
'HP': 40.0,
'Name': 'Voltorb',
'SpecialAttack': 55.0,
'SpecialDefense': 55.0,
'Speed': 100.0,
'Total': 330.0,
'Type': 'Electric'},
{'Attack': 30.0,
'Defense': 33.0,
'HP': 32.0,
'Name': 'Pikachu',
'SpecialAttack': 55.0,
'SpecialDefense': 55.0,
'Speed': 100.0,
'Total': 330.0,
'Type': 'Electric'},
... etc
]
</code></pre>
<p>我将沿着</p>
<pre><code>def filtered_pokedex(pokedex_data, filter=filter_options):
....etc
</code></pre>
<p>但我能自己解决</p>
<p>如果它需要更好的解释或编辑只是让我知道干杯…有史以来第一次在堆栈交换问题,所以希望我提供了足够的信息</p>
<p>干杯</p>