我有一个如下所示的数据对象:
{
'node-16': {
'tags': ['cuda'],
'localNodes': [
{
'name': 'nC',
'consumesFrom': ['nA', 'nB'],
'classType': 'VectorAdder.VectorAdder'
},
{
'name': 'nB',
'consumesFrom': None,
'classType': 'RandomVector'
}
]
},
'node-17': {
'tags': ['boring'],
'localNodes': [
{
'name': 'nA',
'consumesFrom': None,
'classType': 'RandomVector'
}
]
}
}
请注意,节点nA是nC的生产者。找出给定localNode是否是数据结构中另一个localnode的生产者(而不是在同一列表中)的最快方法是什么?
例如,我想知道nA(node-17)为nC生成(存在于node-16上)。但是我不需要知道nB为nC生成,因为它们存在于同一个localNodes列表中。
答案 0 :(得分:1)
namedict = dict((x['name'], y) for y in data for x in data[y]['localNodes'])
proddict = dict((z['name'], [y for y in z['consumesFrom'] if namedict[y] != x])
for x in data for z in data[x]['localNodes'] if z['consumesFrom'] is not None)
print 'nA' in proddict['nC']