在提取条目上测试条件时提取列表

时间:2015-01-28 13:05:19

标签: python list dictionary

假设我有一个字典fruitLoads列表,所有字典都使用相同的键。我想提取一个列表,其中包含具有满足特定条件的特定名称的所有条目。

apples = [i['Apples'] for i in fruitLoads if i['Apples'] != 0]
  1. 有没有办法避免重复i['Apples']
  2. 如果在float(i['Apples'])代替我的两个条目中,此解决方案是否适用?

1 个答案:

答案 0 :(得分:4)

您可以使用嵌套的生成器表达式:

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]