Python3 如何将带av_labels字段的嵌套字典转换为指定字典-of-列表?
Python3 实现嵌套字典结构适配转换
核心转换逻辑
转换过程不修改顶层哈希类字段的取值与顺序,仅针对av_labels字段做结构重构:
- 遍历原
av_labels下的每一组杀毒软件条目 - 直接提取二级字典中
result键对应的取值,剥离冗余的二级字典层级 - 将每个条目组装为
[杀毒软件名称, 检测结果值]的子列表,最终组成二维列表
可直接运行的实现代码
def transform_input(origin_input): # 保留顶层非av_labels的原有字段 output = {key: val for key, val in origin_input.items() if key != "av_labels"} # 转换av_labels为目标嵌套列表结构 output["av_labels"] = [ [av_vendor, av_detail["result"]] for av_vendor, av_detail in origin_input["av_labels"].items() ] return output
效果验证
将前述样例输入传入上述函数,得到的输出完全匹配目标结构:
- 三个哈希字段(
md5/sha1/sha256)的取值、顺序与输入保持完全一致 av_labels从二级嵌套字典转为二维列表,每个子列表第一个元素为杀毒软件名,第二个元素为对应的检测结果,None值直接保留无需额外处理- 无冗余的
result嵌套键
注意事项
- Python3.7及以上版本的原生字典会默认保留插入顺序,转换后的二维列表元素顺序和原输入的条目顺序完全一致;如果需要在更早版本的Python环境下也保持固定顺序,可将原
av_labels的存储结构替换为collections.OrderedDict - 该实现无额外第三方依赖,Python3原生环境即可直接运行
内容的提问来源于stack exchange,提问作者h4n1
相关产品推荐
相关产品推荐

