如果我有以下矩阵,其输入格式是列表列表:
乙 | 吨 | 乙 |
---|---|---|
0 | 1 | 0 |
0 | 1 | 1 |
0 | 2 | 1 |
1 | 2 | 0 |
如何构造以下python矩阵:
0 1
D = [[{1}, {1,2}], 0
[{2}, {}]] 1
在 D 的元素中,将 (B,E) 对与其各自的 T 合并。 示例:(0,1) 在上述矩阵中,有 T = 1 和 T = 2,因此在 D 矩阵中它应该是一个集合 { 1,2}。由于没有 (1,1) 对,它应该是一个空集 {}。
怎么能以“pythonic”的方式做到这一点?
您可以使用collections.defaultdict
:
from collections import defaultdict
m = [[0, 1, 0], [0, 1, 1], [0, 2, 1], [1, 2, 0]]
d = defaultdict(dict)
for b, t, e in m:
d[b][e] = [t] if e not in d[b] else [*d[b][e], t]
l = {i for b in d.values() for i in b}
result = [[set(k.get(j, [])) for j in l] for k in d.values()]
print(result)
输出:
[[{1}, {1, 2}],
[{2}, set()]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句