如何使用Python对象列表中的np.where返回内部对象匹配条件?

如何使用Python对象列表中的np.where返回内部对象匹配条件?,python,numpy,dictionary,where-clause,Python,Numpy,Dictionary,Where Clause,为了进一步掌握Python,我正在努力在矢量化numpy中实现一个类似于列表的基本搜索任务 我有一个字典列表,我想选择那些具有特定键:值对的字典,这将是我的真值条件。我的直觉是使用列表上的np.where,因为这个函数返回符合特定条件的列表成员。但是np.where似乎不允许指定列表成员的任何内部属性/子列表 例如,下面的代码为列表索引提供了一个TypeError dictionaries = [{'name':'Koko', 'value':1}, {'name

为了进一步掌握Python,我正在努力在矢量化numpy中实现一个类似于列表的基本搜索任务

我有一个字典列表,我想选择那些具有特定键:值对的字典,这将是我的真值条件。我的直觉是使用列表上的np.where,因为这个函数返回符合特定条件的列表成员。但是np.where似乎不允许指定列表成员的任何内部属性/子列表

例如,下面的代码为列表索引提供了一个TypeError

dictionaries = [{'name':'Koko', 'value':1},
                {'name':'Sam', 'value':2},
                {'name':'Mike', 'value':3},
                {'name':'Bob', 'value':4},
                {'name':'Alex', 'value':5}]

names_to_check = ['Koko', 'Bob']

search_results = np.where(dictionaries['name'] in names_to_check)
我知道我总是可以做一个for循环来手动处理这个问题

我使用np.where是正确的,还是有更好的方法来矢量化此任务?

如何:

search_results = [x['name'] in names_to_check for x in dictionaries]
print(search_results)

[True, False, False, True, False]
那么:

search_results = [x['name'] in names_to_check for x in dictionaries]
print(search_results)

[True, False, False, True, False]
我宁愿使用过滤器而不是numpy:

>>>listfilterlambda x:x[name]在名称检查、字典中 [{'name':'Koko','value':1},{'name':'Bob','value':4}] 我宁愿使用过滤器而不是numpy:

>>>listfilterlambda x:x[name]在名称检查、字典中 [{'name':'Koko','value':1},{'name':'Bob','value':4}]
numpy不能很好地使用字典,您需要为它设置数组,如果您将字典存储在一个数组中,您将失去numpy的所有优势。相反,您可以将其转换为DataFrame df=pd.DataFramedictionaries,并使用df[df['name']进行筛选。isinnames_to_check]。其中返回参数数组为true的索引。所以,它只和那个论点一样好。但是有了字典列表,就没有一种快速的数值测试方法。将整个问题转换为Pandas肯定会让事情变得更容易,但是Pandas有很多开销。是否有其他方法可以在保留dict的同时对这种情况进行矢量化,不幸的是,dict是我拥有的数据的一部分?您可以尝试使用listdictionaries。项,矢量化是numpy的一项功能,最好通过使用数值基元的numpy数组来利用它。否则,所有优势都将丧失。如果您不愿意转换,那么将numpy与对象列表混为一谈是没有意义的。numpy不能很好地与字典配合使用,您需要为它设置数组,如果您将字典存储在数组中,则会失去numpy的所有优点。相反,您可以将其转换为DataFrame df=pd.DataFramedictionaries,并使用df[df['name']进行筛选。isinnames_to_check]。其中返回参数数组为true的索引。所以,它只和那个论点一样好。但是有了字典列表,就没有一种快速的数值测试方法。将整个问题转换为Pandas肯定会让事情变得更容易,但是Pandas有很多开销。是否有其他方法可以在保留dict的同时对这种情况进行矢量化,不幸的是,dict是我拥有的数据的一部分?您可以尝试使用listdictionaries。项,矢量化是numpy的一项功能,最好通过使用数值基元的numpy数组来利用它。否则,所有优势都将丧失。如果您不愿意转换,那么将numpy与对象列表混合是没有意义的