首页 > 解决方案 > 如何在 Python 对象列表上使用 np.where 来返回匹配条件的内部对象?

问题描述

为了进一步掌握 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 loop手动处理这个问题。

我在np.where这里使用是对的,还是有更好的方法来矢量化这个任务?

标签: pythonnumpydictionarywhere-clause

解决方案


而不是numpy我宁愿去filter

>>> list(filter(lambda x: x["name"] in names_to_check, dictionaries))
[{'name': 'Koko', 'value': 1}, {'name': 'Bob', 'value': 4}]

推荐阅读