首页 > 解决方案 > Python json通过特定键值在列表中查找字典

问题描述

我正在使用 api 获取有关公交线路的信息,并获得了该信息的字典列表。

以下是示例。

list = [{'start':'location A',
 'end':'location B',
 'routeNo':'1'},
{'start':'location C',
 'end':'location D',
 'routeNo':'2'},
{'start':'location E',
 'end':'location F',
 'routeNo':'3'}]

我试图通过它的'routeNo'来获取特定路线的整个字典。例如,我想使用 '3' 来获取这条路线的信息。预期结果如下。

{'start':'location E',
 'end':'location F',
 'routeNo':'3'}

我尝试过的最接近的事情是

print(list[2])

这并不理想,因为我没有搜索它,我只是得到列表中的第三项。

所以我正在寻找其他方法来获得结果。谢谢。

标签: pythonjsonlistdictionary

解决方案


以下是您如何搜索它:

def find_route(data, route_no):
    return list(filter(lambda x: x.get('rounteNo') == route_no, data))

route = find_rounte(route_list, '3')

注意我重命名listroute_list. 那是因为list它是一个内置函数并且你已经覆盖了,这是一种不好的做法。

另外,假设您是初学者,这里有一个更易于理解的版本:

def find_route(data, route_no):
    return [route for route in data if route.get('rounteNo') == route_no]

推荐阅读