在测试提取条目的条件时提取列表
Extracting a list while testing a condition on extracted entries
假设我有一个字典列表fruitLoads
,所有字典都具有相同的键。我想提取一个列表,其中包含满足特定条件的具有特定名称的所有条目。
apples = [i['Apples'] for i in fruitLoads if i['Apples'] != 0]
- 有没有办法避免重复
i['Apples']
?
- 如果我在两个条目中都使用
float(i['Apples'])
,此解决方案是否适用?
您可以使用嵌套的生成器表达式:
apples = [v for v in (i['Apples'] for i in fruitLoads) if v != 0]
虽然可以通过将生成器分配给一个单独的变量来使其更具可读性:
apple_loads = (i['Apples'] for i in fruitLoads)
apples = [v for v in apple_loads if v != 0]
现在您也可以合并转换:
apple_loads = (float(i['Apples']) for i in fruitLoads)
apples = [v for v in apple_loads if v != 0]
假设我有一个字典列表fruitLoads
,所有字典都具有相同的键。我想提取一个列表,其中包含满足特定条件的具有特定名称的所有条目。
apples = [i['Apples'] for i in fruitLoads if i['Apples'] != 0]
- 有没有办法避免重复
i['Apples']
? - 如果我在两个条目中都使用
float(i['Apples'])
,此解决方案是否适用?
您可以使用嵌套的生成器表达式:
apples = [v for v in (i['Apples'] for i in fruitLoads) if v != 0]
虽然可以通过将生成器分配给一个单独的变量来使其更具可读性:
apple_loads = (i['Apples'] for i in fruitLoads)
apples = [v for v in apple_loads if v != 0]
现在您也可以合并转换:
apple_loads = (float(i['Apples']) for i in fruitLoads)
apples = [v for v in apple_loads if v != 0]