Python 将多个列表进行比较 Table
Python comparing multiple lists into Comparison Table
我不是在寻找确切的解决方案,而是在寻找要研究的关键字。不知道为什么,但我真的无法为这个非常简单的问题找到任何示例。
假设我有 3 个列表(可能更多)如下所示:
l1=[x,y,z]
l2=[a,y,z,b]
l3=[a,b,c,d,e]
我想要做的是比较 table 看起来像这样:
l1 l2 l3
a 0 1 1
b 0 1 1
c 0 0 1
d 0 0 1
e 0 0 1
x 1 0 0
y 1 1 0
z 1 1 0
列表可以有不同的长度,并且它们绝不会像这样重复:
l = [x,x,y]
再次重申,我并不是要找人帮我处理任务,我只是在寻找一些关键字、建议和伪代码来开始工作。
它可能不是最快或最有效的解决方案,但我是这样做的。
我创建了一个字典,其中的键是所有列表中的值。
值是出现在哪个列表中。
然后我逐行打印 headers (列表名称)和每个键和值。
我很确定有比我的解决方案更好的方法。
l1=["x","y","z"]
l2=["a","y","z","b"]
l3=["a","b","c","d","e"]
values = sorted(set(l1 + l2 + l3))
d = {}
for value in values:
x = []
if value in l1:
x.append("1")
else:
x.append("0")
if value in l2:
x.append("1")
else:
x.append("0")
if value in l3:
x.append("1")
else:
x.append("0")
d[value] = x
print(" "*3 + "l1 l2 l3")
for k in d:
print(k + " "*2 + " ".join(d[k]))
得到澄清后,如果你想旋转你的数据,为什么不尝试字典,以行 ID 为键,值是列表 ID 的列表(因为它们是交换的,你应该有一些识别方法)?例如:
{ 'a': [l2, l3],
'b': [l2, l3],
'c': [l3],
...
}
我不是在寻找确切的解决方案,而是在寻找要研究的关键字。不知道为什么,但我真的无法为这个非常简单的问题找到任何示例。
假设我有 3 个列表(可能更多)如下所示:
l1=[x,y,z]
l2=[a,y,z,b]
l3=[a,b,c,d,e]
我想要做的是比较 table 看起来像这样:
l1 l2 l3
a 0 1 1
b 0 1 1
c 0 0 1
d 0 0 1
e 0 0 1
x 1 0 0
y 1 1 0
z 1 1 0
列表可以有不同的长度,并且它们绝不会像这样重复:
l = [x,x,y]
再次重申,我并不是要找人帮我处理任务,我只是在寻找一些关键字、建议和伪代码来开始工作。
它可能不是最快或最有效的解决方案,但我是这样做的。 我创建了一个字典,其中的键是所有列表中的值。 值是出现在哪个列表中。 然后我逐行打印 headers (列表名称)和每个键和值。 我很确定有比我的解决方案更好的方法。
l1=["x","y","z"]
l2=["a","y","z","b"]
l3=["a","b","c","d","e"]
values = sorted(set(l1 + l2 + l3))
d = {}
for value in values:
x = []
if value in l1:
x.append("1")
else:
x.append("0")
if value in l2:
x.append("1")
else:
x.append("0")
if value in l3:
x.append("1")
else:
x.append("0")
d[value] = x
print(" "*3 + "l1 l2 l3")
for k in d:
print(k + " "*2 + " ".join(d[k]))
得到澄清后,如果你想旋转你的数据,为什么不尝试字典,以行 ID 为键,值是列表 ID 的列表(因为它们是交换的,你应该有一些识别方法)?例如:
{ 'a': [l2, l3],
'b': [l2, l3],
'c': [l3],
...
}