如何解决在python中生成布尔数组
我是编程新手,在编写代码时遇到一些麻烦,请任何人帮助。
我有字典和清单,例如:
dic = {1:[1,3],2:[2,4],3:[1,5]}
list = [1,2,3,4,5]
如何检查列表中的每个元素是否存在于字典中并输出一个布尔矩阵(通过字典键)?谢谢!
1 2 3
1 TRUE FALSE TRUE
2 FALSE TRUE FALSE
3 TRUE FALSE FALSE
4 FALSE TRUE FALSE
5 FALSE FALSE TRUE
#Columns是字典中的每个键。行是列表中的每个元素。
解决方法
由于您需要构建二维数组矩阵,因此可以创建列表列表:
dic = {1:[1,3],2:[2,4],3:[1,5]}
lst = [1,2,3,4,5]
ansMatrix = []
for r in lst :
temp = []
for k in dic:
if r in dic[k]:
temp.append(True)
else:
temp.append(False)
ansMatrix.append(temp)
print(ansMatrix)
输出:
[[True,False,True],[False,True,False],[True,True]]
list是一个关键字,因此请勿将其用作名称。 您可以尝试评论中提到的列表理解
ansMatrixUsingListComp = [ [r in dic[k] for k in dic ] for r in lst ]
,
尝试一下:
dic = {1:[1,5]}
list_ = [1,5] #notice the underscore "list_"
matrix = [[item in value for value in dic.values()]
for item in list_]
或者,更冗长但更容易理解:
dic = {1:[1,5]
matrix = []
for item in list_:
row = []
for value in dic.values():
row.append(item in value)
matrix.append(row)
编辑: @SM Abu Taher Asif所说的话,请勿将“ list”用作变量名,它是一个保留关键字,以这种方式使用可能会导致错误。如果必须的话,通常使用'ls'或'list _'。