如何对Python嵌套字典(Nested Dictionaries)进行指定子集提取?
提取嵌套字典中的指定子集
需求说明
需要从给定的嵌套字典original中,提取每个Tricluster对应的Data字段,构建成结构更简洁的new_dictionary。
原始字典
original = {"Triclusters":{"0":{"%Missings":"0","ColumnPattern":"Constant","Data": {"0":[["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"] ,["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72", "-1.72"]], "1":[["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"] ,["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"]], "2":[["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"] ,["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"]]}, "#contexts":3,"PlaidCoherency":"No Overlapping","%Errors":"0","%Noise":"0", "X":[0,2,3,4],"ContextPattern":"Constant","Y":[0,2,6,7], "RowPattern":"Constant","Z":[0,1,2],"#rows":4,"#columns":4}, "1":{"%Missings":"0","ColumnPattern":"None","Data":{"0":[["-3.52","-9.34","-9.04","-2.56"], ["-3.52","-9.34","-9.04","-2.56"] ,["-3.52","-9.34","-9.04","-2.56"] ,["-3.52","-9.34","-9.04","-2.56"]], "1":[["7.04","-2.13","2.04","5.09"], ["7.04","-2.13","2.04","5.09"], ["7.04","-2.13","2.04","5.09"], ["7.04","-2.13","2.04","5.09"]], "2":[["2.17","5.93","-5.47","-8.74"], ["2.17","5.93","-5.47","-8.74"], ["2.17","5.93","-5.47","-8.74"], ["2.17","5.93","-5.47","-8.74"]]}, "#contexts":3,"PlaidCoherency":"No Overlapping","%Errors":"0","%Noise":"0", "X":[0,1,2,3],"ContextPattern":"None","Y":[1,3,4,9],"RowPattern":"Constant", "Z":[0,1,2],"#rows":4,"#columns":4}},"#DatasetMinValue":-10,"#DatasetColumns":10, "#DatasetContexts":3,"#DatasetMaxValue":10,"#DatasetRows":5}
目标字典结构
new_dictionary = {"0":{"0":[["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"] ,["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"]], "1":[["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"] ,["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"]], "2":[["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"] ,["-1.72","-1.72","-1.72","-1.72"],["-1.72","-1.72","-1.72","-1.72"]]}, "1":{"0":[["-3.52","-9.34","-9.04","-2.56"],["-3.52","-9.34","-9.04","-2.56"], ["-3.52","-9.34","-9.04","-2.56"],["-3.52","-9.34","-9.04","-2.56"]], "1":[["7.04","-2.13","2.04","5.09"],["7.04","-2.13","2.04","5.09"], ["7.04","-2.13","2.04","5.09"],["7.04","-2.13","2.04","5.09"]], "2":[["2.17","5.93","-5.47","-8.74"],["2.17","5.93","-5.47","-8.74"], ["2.17","5.93","-5.47","-8.74"],["2.17","5.93","-5.47","-8.74"]]}}
实现方案
方法一:字典推导式(简洁高效)
直接通过字典推导式遍历original["Triclusters"]的键值对,提取每个子字典中的Data字段:
new_dictionary = {cluster_id: cluster_info["Data"] for cluster_id, cluster_info in original["Triclusters"].items()}
方法二:循环遍历(适合新手理解)
通过显式循环逐个提取并添加到新字典:
new_dictionary = {} # 遍历每个Tricluster的ID和对应数据 for cluster_id, cluster_info in original["Triclusters"].items(): # 提取当前Tricluster的Data部分,存入新字典 new_dictionary[cluster_id] = cluster_info["Data"]
两种方法都能精准提取所需数据,最终得到目标结构的字典。
内容的提问来源于stack exchange,提问作者dc_genuine
相关产品推荐
相关产品推荐

