Python如何获取嵌套字典列表中所有key为value的字符串最大长度
修正后的函数实现
你原有的代码没有提取字典中key为value的字段,也没有处理嵌套在子列表中的字典,因此无法得到正确结果。
def checkLenFromConfigs(self, configs): def collect_value_lengths(data): lengths = [] # 处理列表类型输入 if isinstance(data, list): for item in data: lengths.extend(collect_value_lengths(item)) # 处理字典类型输入 elif isinstance(data, dict): # 收集当前字典中value键对应的字符串长度 if 'value' in data and isinstance(data['value'], str): lengths.append(len(data['value'])) # 递归处理字典中所有可能嵌套的列表/字典结构 for v in data.values(): if isinstance(v, (list, dict)): lengths.extend(collect_value_lengths(v)) return lengths all_lengths = collect_value_lengths(configs) return max(all_lengths) if all_lengths else 0
逻辑说明
- 内置递归函数
collect_value_lengths,可自动适配任意层级的列表、字典嵌套结构,不会漏抓任何位置的value字段 - 增加了字符串类型校验,避免非字符串类型取长度时报错,鲁棒性更强
- 先收集所有符合要求的
value字符串长度,最后返回最大值,无符合条件的字符串时默认返回0
示例测试结果
用你提供的示例数据运行函数,会收集到4个value字符串的长度:
'titel{TM} D3'长度12'24V max 2.5A'长度12'30V max 3A'长度10'none'长度4
最终返回最长值12。
内容的提问来源于stack exchange,提问作者wimsenOG
相关产品推荐
相关产品推荐

