大概有类似这么另一个字典列表
[{'name':'jack','point':100},{'name':'rose','point':75}]
然后有了各名字列表['jack','rose','tom']
现在就是查询这个名字列表 in 字典列表 ,凡是名字与字典列表中的‘name’匹配的,就返回'point',没有就返回none
怎么弄的?
d_list = [{'name':'jack','point':100},{'name':'rose','point':75}]
name = ['jack','rose','tom']
for n in name:
is_exist = next((x for x in d_list if x.get("name") == n), False)
point = is_exist.get("point") if is_exist else None
名字列表里的名字要一次性查询么?
可以先把字典列表转为字典(name: key 的映射),然后遍历名字列表,从字典中高效地查找每个名字对应的point。
示例代码如下:
def find_one_point(name_point_dict, name):
if name in name_point_dict:
return name_point_dict[name]
else:
return None
def find_points(dict_list, name_list):
name_point_dict = {}
for d in dict_list:
name_point_dict[d['name']] = d['point']
result_list = []
for name in name_list:
point = find_one_point(name_point_dict, name)
result_list.append(point)
return result_list
if __name__ == '__main__':
name_point_list = [{'name': 'jack', 'point': 100}, {'name': 'rose', 'point': 75}]
name_list = ['jack', 'rose', 'tom']
print(find_points(name_point_list, name_list))
运行结果如下:
[100, 75, None]