布尔矩阵形式Python的列表字典

Zlo*_*Zlo 4 python dictionary numpy matrix

我有一个列表的字典,例如,

dictionary_test = {'A': ['hello', 'byebye', 'howdy'], 'B': ['bonjour', 'hello', 'ciao'], 'C': ['ciao', 'hello', 'byebye']}
Run Code Online (Sandbox Code Playgroud)

我想将其转换为布尔从属关系矩阵以进行进一步分析.最好是dict keys作为列名,列表项作为行名:

         A    B    C
  hello  1    1    1
 byebye  1    0    1
  howdy  1    0    0
bonjour  0    1    0
   ciao  0    1    1
Run Code Online (Sandbox Code Playgroud)

是否可以在Python中进行(最好是我可以将矩阵写入.csv文件)?我想这是我必须要做的事numpy,对吗?

另一个问题是字典的大小是未知的(键的数量和列表中元素的数量都不同).

小智 6

你可以用pandas.这是一个例子.

>>> import pandas as pd
>>> dictionary_test = {'A': ['hello', 'byebye', 'howdy'], 'B': ['bonjour', 'hello', 'ciao'], 'C': ['ciao', 'hello', 'byebye']}
>>> values = list(set([ x for y in dictionary_test.values() for x in y]))
>>> data = {}
>>> for key in dictionary_test.keys():
...  data[key] = [ True if value in dictionary_test[key] else False for value in values ]
... 
>>> pd.DataFrame(data, index=values)
             A      B      C
ciao     False   True   True
howdy     True  False  False
bonjour  False   True  False
hello     True   True   True
byebye    True  False   True
Run Code Online (Sandbox Code Playgroud)

如果您希望按特定顺序排列.只需手动设置values.