Есть много предложений, но я не могу их придерживаться.Ближайшее решение у меня есть ниже.Данные имеют вид:
my_list = ([1, [2, 3], 4, [5, [6 , [], [8, 9]], 10]], 8)
и функция
def convert(G, l, d):
z = []
if isinstance(x, list):
print(x)
z.append(convert(G, x, d))
else:
print(x)
z.append([v[d] for n,v in G.nodes(data=True) if n == l])
return z
выполнение:
print(convert(G, my_list, "name"))
Это дает пустой массив, но print (x) получает источник какявляется.Я близко, я думаю.Проблема в том, что я не знаю, как передать l
в if n == l
как целое число, а не список.
РЕДАКТИРОВАТЬ
Outpit: (['a', ['b', 'c'], 'd', ['e', ['f' , [], ['g', 'h']], 'j']], 'g)
втот же формат (вложенный).Пользовательская функция просто берет каждый элемент (int) и возвращает его атрибут из dict (letter).
Еще одна попытка:
my_list = ([1, [2, 3], 4, [5, [6 , [], [8, 9]], 10]], 8)
z = []
def convert(G, l, d):
z.append([convert(G, x, d) if isinstance(x, list) else [v[d] for n,v in G.nodes(data=True) if n == x]])
return z
z = convert(G, my_`list, "name")
print(z)
Эта часть является пользовательской функцией:
[v[d] for n,v in G.nodes(data=True) if n == l]
, поэтому G может быть любым.Вы можете принять это как [...]
Например: G.nodes = {0: {'name': 'a'}, 1: {'name': 'b'}, 2: {'name': 'c'}, 3: {'name': 'd'}}