【发布时间】:2018-05-25 23:11:43
【问题描述】:
与此post相关的问题。
我需要帮助来根据一组可变条件过滤列表列表。
这里是列表的摘录:
ex = [
# ["ref", "type", "date"]
[1, 'CB', '2017-12-11'],
[2, 'CB', '2017-12-01'],
[3, 'RET', '2017-11-08'],
[1, 'CB', '2017-11-08'],
[5, 'RET', '2017-10-10'],
]
我想应用像list(filter(makeCondition, ex)) 这样的最终处理,其中makeCondition(myList, **kwargs) 函数返回一个可以过滤列表的布尔值。
我无法按照post 中的建议构建此函数,因为 **kwargs 字典中定义的条件数量是可变的。
条件集示例:
conditions = {"ref": 3}
conditions = {"ref": 1, "type": "CB"}
这是一个开始:
def makeConditions(myList, **p):
# For each key:value in the dictionnary
for key, value in p.items():
if key == "ref":
lambda x: x[0] == value
elif key == "type":
lambda x: x[1] == value
elif key == "date":
lambda x: x[2] == value
# return chained conditions...
list(filter(makeConditions, ex))
我不明白各种 cmets 试图在上面提到的帖子中给出的合乎逻辑的想法......我是否必须为每个子列表执行 filter() 函数,或者是否可以为整个全局列表执行此操作?非常欢迎任何建议!
【问题讨论】:
-
它是否总是有参考、类型和日期,还是可变的?
-
conditions变量确实是变量,如帖子所示。子列表的内容始终与 3 个对象保持一致:ref、type 和 date。
标签: python python-3.x filtering