85 lines
3.5 KiB
Python
85 lines
3.5 KiB
Python
def extract_matching_keys(data_dict, good_list):
|
||
"""
|
||
递归遍历data_dict,查找good_list中存在的键,并将匹配的键及其值添加到结果字典中。
|
||
|
||
参数:
|
||
- data_dict (dict): 要遍历的嵌套字典。
|
||
- good_list (list): 包含要查找的键的列表。
|
||
|
||
返回:
|
||
- dict: 包含所有匹配键及其值的字典。
|
||
"""
|
||
result = {}
|
||
|
||
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,则无需进一步处理
|
||
|
||
recurse(data_dict)
|
||
return result
|
||
|
||
# 示例数据
|
||
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"
|
||
}
|
||
}
|
||
}
|
||
|
||
good_list = [
|
||
"门禁控制器",
|
||
"出门按钮",
|
||
"单门电磁锁",
|
||
"指纹仪",
|
||
"门禁服务器",
|
||
"佳能摄像机",
|
||
"尼康录影机"
|
||
]
|
||
|
||
# 使用函数提取匹配的键
|
||
filtered_dict = extract_matching_keys(data_dict, good_list)
|
||
|
||
# 打印结果
|
||
import pprint
|
||
pprint.pprint(filtered_dict)
|