将列表的字典打印为网格布局

And*_*rai 4 python dictionary pretty-print grid-layout pandas

好吧,我之前阅读了所有这些,我认为大熊猫可能是一个解决方案,但我的问题略有不同:
垂直
打印列表列表打印列表作为表格数据
打印字典值在python列表中
打印到字典表

我有一份清单:

dict={"A":[i1, i2,i3], "B":[i1, i4,i5], "C":[i1, i2,i5]}
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

    i1    i2    i3    i4    i5   
A    x     x     x     -     -   
B    x     -     -     x     x   
C    x     x     -     -     x  
Run Code Online (Sandbox Code Playgroud)

(甚至更好,

    i1    i2    i3    i4    i5  
A    A     A     A     -     -  
B    B     -     -     B     B  
C    C     C     -     -     C  
Run Code Online (Sandbox Code Playgroud)

或者在另一个字典中匹配A,B,C或(A,in)的值,但如果我只能拥有第一个表,我会非常高兴)

没有列表包含重复,但这些列表中的每个元素都是从同一个列表中提取的(实际上我的问题是使用相应的蛋白质制作带注释的术语网格,键是带注释的术语,在我的上下文中是与这些蛋白质相关的函数研究).

我确实可以想到一种复杂的方法(构建0和1的向量,用于将每个列表与一般列表进行比较,将这些向量与键相关联,将其放入一个pandas DataFrame中,该格式将由我重新建立每个列表中的大量实体,然后打印出来),但这看起来很乏味/单调.

我认为必须有一个已知的方法来做一些模块(熊猫,漂亮,其他?); 我只是不知道.所以我很高兴有任何见解.谢谢

piR*_*red 5

apply 用一个 lambda

d = {
    "A": ['i1', 'i2', 'i3'],
    "B": ['i1', 'i4', 'i5'],
    "C": ['i1', 'i2', 'i5']
}

df = pd.DataFrame(d)

df.apply(lambda c: pd.Series(c.name, c.values)).fillna('-').T

  i1 i2 i3 i4 i5
A  A  A  A  -  -
B  B  -  -  B  B
C  C  C  -  -  C
Run Code Online (Sandbox Code Playgroud)