Python—迭代字典列表

Python—迭代字典列表,python,python-3.x,Python,Python 3.x,下面问题中的想法是给出一个带有一些值的字典列表,我需要的是一个依赖节点的嵌套字典 Nodes = [ { "number": "10", "dependsOn": "13", "priority": "1649" "version": "1.7", "health": &quo

下面问题中的想法是给出一个带有一些值的字典列表,我需要的是一个依赖节点的嵌套字典

 Nodes = [
{
    "number": "10",
    "dependsOn": "13",
    "priority": "1649"
    "version": "1.7",
    "health": "ok"
},
{
    "number": "12",
    "dependsOn": "14",
    "priority": "2100"
    "version": "1.8",
    "health": "ok"
},
{
    "number": "3",
    "dependsOn": "2",
    "priority": "1234"
    "version": "1.1",
    "health": "ok"
}, {
    "number": "2",
    "dependsOn": "1",
    "priority": "1456",
    "version": "1.3",
    "health": "ok"
}, {
    "number": "1",
    "dependsOn": "10",
    "priority": "1890,
    "version": "1.2",
    "health": "ok"
},
{
    "number": "5",
    "dependsOn": "4",
    "priority": "1260",
    "version": "1.2",
    "health": "ok"
},
{
    "number": "4",
    "dependsOn": "12",
    "priority": "1150",
    "version": "1.4",
    "health": "ok"
}
}]
预期产出:

dependent_nodes =  { 3 : { 'dependsOn': [2,1,10,13],
                       'priority': 1234 # Lowest priority of the three
                      }, 
                  5 : { 'dependsOn': [4,12,14],
                       'priority': 1150 # Lowest priority of the three
                      }
                }

实现此输出的最佳方法是什么?

类似的内容应该可以让您开始。它不是最佳的,但你可以调整它,使其与适当的上下文相适应

mapping={}
对于节点中的项目:
映射[item['number']=(item['dependsOn'],item['priority'])
ans={}
added=set()
对于键,映射.items()中的值:
如果添加了输入:
持续
如果密钥不在ans中:
ans[key]={'dependsOn':[],'priority':float('Inf')}
curr=值[0]
优先级=浮动(值[1])
尽管如此:
ans[key]['dependsOn'].追加(当前)
添加。添加(当前)
ans[key]['priority']=min(ans[key]['priority'],priority)
如果当前为ans:
ans[key]['dependsOn']+=ans[curr]['dependsOn']
ans[key][priority']=min(ans[key][priority'],ans[curr][priority']))
德尔安[货币]
打破
映射中的elif curr和未添加的映射[curr][0]:
优先级=浮动(映射[curr][1])
curr=映射[curr][0]
其他:
打破
这将产生:

{'3':{'dependsOn':['2','1','10','13'],'priority':1234.0},
'5':{'dependsOn':['4','12','14'],'priority':1150.0}

在Python(或大多数其他语言)中,不能使用卷曲引号作为字符串分隔符。编辑代码时关闭“智能报价”。很高兴知道。谢谢@Barmarcan您发布了预期的输出?您的Dict中只有3和5的是谁?看起来他们想要DAG中的所有根以及依赖于这些根的任何节点。谢谢@sumshyftw,尝试一下。