2024-10-27 12:08:54 +08:00
|
|
|
|
def extract_matching_keys(data_dict, good_list):
|
|
|
|
|
"""
|
|
|
|
|
递归遍历data_dict,查找good_list中存在的键,并将匹配的键及其值添加到结果字典中。
|
2024-09-20 18:01:48 +08:00
|
|
|
|
|
2024-10-27 12:08:54 +08:00
|
|
|
|
参数:
|
|
|
|
|
- data_dict (dict): 要遍历的嵌套字典。
|
|
|
|
|
- good_list (list): 包含要查找的键的列表。
|
2024-09-27 15:00:30 +08:00
|
|
|
|
|
2024-10-27 12:08:54 +08:00
|
|
|
|
返回:
|
|
|
|
|
- dict: 包含所有匹配键及其值的字典。
|
|
|
|
|
"""
|
|
|
|
|
result = {}
|
2024-09-27 15:00:30 +08:00
|
|
|
|
|
2024-10-27 12:08:54 +08:00
|
|
|
|
def recurse(current_dict):
|
|
|
|
|
if isinstance(current_dict, dict):
|
|
|
|
|
for key, value in current_dict.items():
|
|
|
|
|
if key in good_list:
|
|
|
|
|
result[key] = value
|
|
|
|
|
# 递归遍历子字典
|
|
|
|
|
recurse(value)
|
|
|
|
|
elif isinstance(current_dict, list):
|
|
|
|
|
for item in current_dict:
|
|
|
|
|
recurse(item)
|
|
|
|
|
# 如果current_dict不是dict或list,则无需进一步处理
|
2024-09-27 15:00:30 +08:00
|
|
|
|
|
2024-10-27 12:08:54 +08:00
|
|
|
|
recurse(data_dict)
|
|
|
|
|
return result
|
2024-09-27 15:00:30 +08:00
|
|
|
|
|
2024-10-27 12:08:54 +08:00
|
|
|
|
# 示例数据
|
|
|
|
|
data_dict = {
|
|
|
|
|
"门禁管理系统": {
|
|
|
|
|
"门禁控制器": {
|
|
|
|
|
"系统架构": "1.系统采用 CS架构,支持 Web端登录,支持远程软硬件重启升级、维护、管理。",
|
|
|
|
|
"联网方式": "2.★支持 TCP/IP、4G、RS485联网方式、有线与无线(WIFI)可自动切换 ,控制器支持百台到上千台设备组网,需满足大楼多门点的管理数量要求。",
|
|
|
|
|
"安装方式": "3.★安装方式支持壁挂安装。",
|
|
|
|
|
"开门方式": "4.★支持卡、密码、首卡、双卡、主卡/副卡、胁迫码、多卡分组、指纹识别+中心确认等开门方式。全面支持读卡器、指纹、人脸、指静脉、RS485识读设备的混合接入。"
|
|
|
|
|
},
|
|
|
|
|
"出门按钮": {
|
|
|
|
|
"安装方式": "标准 86底盒安装方式,支持常开,常闭方式",
|
|
|
|
|
"结构": "塑料面板",
|
|
|
|
|
"性能": "最大耐电流 1.25A电压 250V",
|
|
|
|
|
"服务要求": "产品 需全 国联 保,享 受三 包服 务,保 修期: 3年。"
|
|
|
|
|
},
|
|
|
|
|
"单门电磁锁": {
|
|
|
|
|
"1)通电上锁,断电开锁,开门时间可调节。": "1)通电上锁,断电开锁,开门时间可调节。",
|
|
|
|
|
"2)稳定性强,连续工作锁体无故障,使用更安全。": "2)稳定性强,连续工作锁体无故障,使用更安全。"
|
|
|
|
|
},
|
|
|
|
|
"指纹仪": {
|
|
|
|
|
"传感器类型": "1.先进半导体传感器,全面领先于普通光学识别技术,更好的判别假指纹、湿指、污损破皮手指。",
|
|
|
|
|
"显示及提示": "2.直观的 LCD液晶显示及语音验证提示,配针孔摄像机,实现视频联动抓拍,手动布撤防,实现与监控中心门禁系统实现对讲(外置语音盒)。",
|
|
|
|
|
"验证方式": "3.支持 IC卡、指纹、卡加密码、编号多种组合验证方式。"
|
|
|
|
|
},
|
|
|
|
|
"门禁服务器": {
|
|
|
|
|
"CPU": "1颗 intel至强系列处理器,核数≥12核,主频≥2.2GHz",
|
|
|
|
|
"内存": "32G*2 DDR4,16根内存插槽,最大支持扩展至 2TB内存",
|
|
|
|
|
"硬盘": "4块 600G 10K 2.5寸 SAS硬盘"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"摄像系统": {
|
|
|
|
|
"佳能摄像机": {
|
|
|
|
|
"清晰度": "1k"
|
|
|
|
|
},
|
|
|
|
|
"尼康录影机": {
|
|
|
|
|
"画质": "2k"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-09-27 15:00:30 +08:00
|
|
|
|
|
2024-10-27 12:08:54 +08:00
|
|
|
|
good_list = [
|
|
|
|
|
"门禁控制器",
|
|
|
|
|
"出门按钮",
|
|
|
|
|
"单门电磁锁",
|
|
|
|
|
"指纹仪",
|
|
|
|
|
"门禁服务器",
|
|
|
|
|
"佳能摄像机",
|
|
|
|
|
"尼康录影机"
|
|
|
|
|
]
|
2024-09-27 15:00:30 +08:00
|
|
|
|
|
2024-10-27 12:08:54 +08:00
|
|
|
|
# 使用函数提取匹配的键
|
|
|
|
|
filtered_dict = extract_matching_keys(data_dict, good_list)
|
2024-09-27 15:00:30 +08:00
|
|
|
|
|
2024-10-27 12:08:54 +08:00
|
|
|
|
# 打印结果
|
|
|
|
|
import pprint
|
|
|
|
|
pprint.pprint(filtered_dict)
|