寻找将这种逻辑放入列表理解的方法:
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循环?请记住,因为账单是字典(不可用),所以设置已经完成。
编辑重复答案弹出式事物:解决方案结果完全不同。
答案 0 :(得分:1)
你的内循环是过滤器的一部分:
new_bills = [
bill for bill in bills
if any(timestart <= gnr["date"] <= timeend for gnr in bill["gnrs"])
]