Python 检查字典列表中是否有矩阵

Python 检查字典列表中是否有矩阵,python,list,dictionary,matrix,Python,List,Dictionary,Matrix,我有一个python列表字典,我想检查一下矩阵是否已经在字典中了 C = {0: [matrix([[ 8.87155979, 2.50616085]]), matrix([[ 0.46289077, 8.05592104]])], 1: [matrix([[-1.3115368 , 7.60922069]])], 2: [matrix([[ 0.46289077, 8.05592104]]), matrix([[-1.3115368 , 7.60922069]

我有一个python列表字典,我想检查一下矩阵是否已经在字典中了

C = {0: [matrix([[ 8.87155979,  2.50616085]]), matrix([[ 0.46289077,  8.05592104]])], 
     1: [matrix([[-1.3115368 ,  7.60922069]])], 
     2: [matrix([[ 0.46289077,  8.05592104]]), matrix([[-1.3115368 ,  7.60922069]]), matrix([[ 3.4826805 , -0.73544937]])]}
此输入应在C中返回
true
[[8.87155979,2.50616085]]
我该怎么做

C= {0: [[[ 8.87155979, 2.50616085]],[[ 0.46289077, 8.05592104]]], 1: [[[-1.3115368 , 7.60922069]]]}

y = [[ 8.87155979,  2.50616085]]
print  any(y in x for x in C.values())# checks the subelements of the values in your dict
True
根据您的示例,这将适用于您的矩阵

y=[[ 0.46289077,  8.05592104]]

C = {0: [matrix([[ 8.87155979,  2.50616085]]), matrix([[ 0.46289077,  8.05592104]])],
     1: [matrix([[-1.3115368 ,  7.60922069]])],
     2: [matrix([[ 0.46289077,  8.05592104]]), matrix([[-1.3115368 ,  7.60922069]]), matrix([[ 3.4826805 , -0.73544937]])]}



 print any((y == x[0]).all() for x in C.values())
 True

您可以使用两种不同的方式来完成:有列表理解和没有列表理解。这是“python方式”,但这取决于您的决定:

from numpy import *

C = {0: [matrix([[ 8.87155979,  2.50616085]]), matrix([[ 0.46289077,  8.05592104]])], 
     1: [matrix([[-1.3115368 ,  7.60922069]])], 
     2: [matrix([[ 0.46289077,  8.05592104]]), matrix([[-1.3115368 ,  7.60922069]]), matrix([[ 3.4826805 , -0.73544937]])]}

y = [[ 8.87155979, 2.50616085]]

# without list comprehension
for x in C.values():
    for m in x:
        if all(m==y):
            print(True)

# with list comprehension
print(any([all(m==y) for x in C.values() for m in x]))
这很好:

query = [[8.87155979, 2.50616085]]
any(query[0] in x[0] for x in C.values())

我很确定matrix是numpy.matrix。使用OP的
C
,您的解决方案会抛出
ValueError:包含多个元素的数组的真值是不明确的。
对我来说。正如您所说,它是一个numpy.matrix。上面的解决方案对我不起作用。第二个代码使用完全相同的示例对我起作用code@timgeb,好吧,我不是一个读心术的人,所以从我回答时OP提供的内容来看,不需要花太多的时间来理解REST。我很抱歉,但我得到了一个错误:我遗漏了什么?它是一个numpy矩阵。@user3689757-像这样的注释最好嵌入到问题本身中,而不是仅仅作为注释出现。
query = [[8.87155979, 2.50616085]]
any(query[0] in x[0] for x in C.values())