Если я правильно вас понимаю, вы можете использовать collections.defaultdict
, чтобы отобразить из источника список целей, например:
(я добавил некоторые данные имеют несколько источников)
from collections import defaultdict
data = {
"links": [
{"source":"0","target":"1","weight":1,"color":"white"},
{"source":"0","target":"2","weight":1,"color":"yellow"},
{"source":"0","target":"3","weight":1,"color":"white"},
{"source":"5","target":"7","weight":1,"color":"white"},
{"source":"5","target":"8","weight":1,"color":"yellow"},
{"source":"6","target":"9","weight":1,"color":"white"},
]
}
collectDict = defaultdict(list)
for obj in data["links"]:
collectDict[obj["source"]].append(obj["target"])
print(dict(collectDict))
Вывод:
{'0': ['1', '2', '3'], '5': ['7', '8'], '6': ['9']}
РЕДАКТИРОВАТЬ: Вот еще один метод с использованием itertools.groupby
, при условии, что ссылки упорядочены по источникам (в противном случае, просто отсортируйте их раньше)
from itertools import groupby
collectDict = {k: [t["target"] for t in g] for k,g in groupby(data["links"], lambda obj: obj["source"])}
print(collectDict)