首页 > 解决方案 > 从嵌套字典值(树)创建列表列表

问题描述

我使用层次聚类来创建一棵聚类树。

这导致:

dic = {6: {2: 2, 5: {3: 3, 4: {0: 0, 1: 1}}}}

根据集群列出列表:

[ [[6]],
  [[2], [5]],
  [[2], [3], [4]],
  [[2], [3], [0], [1]] ]

根据值列出列表:

[ [[2, 3, 0, 1]],
  [[2], [3, 0, 1]],
  [[2], [3], [0, 1]],
  [[2], [3], [0], [1]] ]

我想要结束的是“根据值列出列表”。

谢谢

标签: pythonlistdictionaryrecursionnested

解决方案


我只是为此花了太多时间:

def list_of_list(d):
    if type(d)!=dict:
        return [[[d]]]
    results=[]
    for k,value in d.items():
        results.append(list_of_list(value))
    L=len(max(results,key=len))
    for i in range(len(results)):
        j=len(results[i]) 
        results[i].extend([results[i][j-1]]*(L-j))
    outputtop=[v  for result in results for v in result[0][0]]
    output=[[outputtop]]
    for l in range(L):
        output.append([ val  for result in results for  val in result[l]])
    return output

推荐阅读