我正在尝试从元组列表中构建列联表。该列表如下所示:
lst = [('a', 'bag'), ('a', 'bag'), ('a', 'bag'), ('a', 'cat'), ('a', 'pen'), ('that', 'house'), ('my', 'car'), ('that', 'bag'), ('this', 'bag')]
给定一个元组,比如说('a', 'bag')
,必须解决 4 件事:
a = lst.count(('a', 'bag'))
这是3
。
b
是所有元组的计数tuple[0] == 'a' and tuple[1] != 'bag'
,它是 2: ('a', 'cat'), ('a', 'pen')
。
当我尝试
lst.count(('a', not 'bag'))
我明白0
了,虽然它应该是2
。-----1
c
是所有元组的计数,其中tuple[0] != 'a' and tuple[1] == 'bag'
. 在这种情况下,('that', 'bag'), ('this', 'bag')
。但是当我尝试
lst.count((not 'a', 'bag'))
我明白0
了,虽然它应该是2
。-----2
d
是所有元组的计数,其中tuple[0] !== 'a' and tuple[1] != 'bag
和 可以很容易地从中获得len(lst) - a
。
我的问题:有没有办法not
在lst.count((x, not y))
or中组合逻辑门lst.count((not x, y))
?如果没有,您能否向我建议如何在没有循环的情况下进行锻炼b
,c
因为复杂性2(N*N)
非常昂贵。
非常感谢您的帮助!