我有一个像
这样的元组列表[
(A,B,C,D,E,..., value),
...
]
其中A, B, C...
是整数或短字符串。列表中每个元组的大小相同(~10个字段)
列表有大约50000个元组。
在UI中,用户可以为每个A, B, C...
字段指定一个值,或者将该字段留空,这意味着它可以具有任何值。
输出应包含列表中所有匹配的元组以及value
的汇总(总和或平均值)
实现这一目标的最快和最快速的方法是什么?
(列表是通过ORM从数据库中读取的,但是有很多应用内计算,因此A,B,C...
字段不会直接映射到数据库列)
或者我应该重新组织清单吗?
答案 0 :(得分:0)
这是一种方法。我不知道它是最快的(它真的重要吗?)还是最Pythonic(不确定这个词的含义),但我确实喜欢一般的策略,即定义一个知道如何的函数或lambda评估每个数据项,如果应该保留,则返回true。
data = [
(1, 2, 3),
('a', 2, 3),
(1, 'c', 4),
(1, 'd', 4),
]
criteria = (1, None, 4)
f = lambda tup: all(t == c or c is None for t, c in zip(tup, criteria))
keep = filter(f, data)