嵌套的Python List理解,打破第一个独特的

时间:2018-03-09 10:56:15

标签: python list-comprehension

寻找将这种逻辑放入列表理解的方法:

new_bills = []
for bill in bills:
    for gnr in bill["gnrs"]:
        if timestart <= gnr["date"] <= timeend:
            new_bills.append(bill)
            break
return new_bills

所以,这些是两个嵌套的词典,我只想要第一个适合过滤器的“bill”实例。

我以前有这个:

return [bill for bill in bills for gnr in bill["gnrs"] if timestart <= gnr["date"] <= timeend]

但是,每次遇到if子句时,都会欺骗bill对象。 有没有办法让列表理解行为像上面的for循环?请记住,因为账单是字典(不可用),所以设置已经完成。

编辑重复答案弹出式事物:解决方案结果完全不同。

1 个答案:

答案 0 :(得分:1)

你的内循环是过滤器的一部分:

new_bills = [
    bill for bill in bills
    if any(timestart <= gnr["date"] <= timeend for gnr in bill["gnrs"])
]