LINUX.ORG.RU

История изменений

Исправление Nervous, (текущая версия) :

Псс, дружище, не хочешь немного рекурсии?

tree = {
    1: {'name': 'Земля', 'parent': None},
    2: {'name': 'Евразия', 'parent': 1},
    3: {'name': 'Китай', 'parent': 2},
    4: {'name': 'Пекин', 'parent': 3},
    5: {'name': 'Австралия', 'parent': 1},
    6: {'name': 'Сидней', 'parent': 5}
}

def path(tree, id):
    """Returns a stringified sequence of node names along a path 
    in the 'tree' from a node with 'id' to a root node."""
    if tree[id]['parent'] == None:
        return tree[id]['name']
    else:
        return ', '.join([tree[id]['name'], path(tree, tree[id]['parent'])])


path(tree, 4) # 'Пекин, Китай, Евразия, Земля'

Исправление Nervous, :

Псс, дружище, не хочешь немного рекурсии?

tree = {
    1: {'name': 'Земля', 'parent': None},
    2: {'name': 'Евразия', 'parent': 1},
    3: {'name': 'Китай', 'parent': 2},
    4: {'name': 'Пекин', 'parent': 3},
    5: {'name': 'Австралия', 'parent': 1},
    6: {'name': 'Сидней', 'parent': 5}
}

def path(tree, id):
    """Returns a stringified sequence of node names along a path 
    in the 'tree' from a leaf node with 'id' to a root node."""
    if tree[id]['parent'] == None:
        return tree[id]['name']
    else:
        return ', '.join([tree[id]['name'], path(tree, tree[id]['parent'])])


path(tree, 4) # 'Пекин, Китай, Евразия, Земля'

Исправление Nervous, :

Псс, дружище, не хочешь немного рекурсии?

tree = {
    1: {'name': 'Земля', 'parent': None},
    2: {'name': 'Евразия', 'parent': 1},
    3: {'name': 'Китай', 'parent': 2},
    4: {'name': 'Пекин', 'parent': 3},
    5: {'name': 'Австралия', 'parent': 1},
    6: {'name': 'Сидней', 'parent': 5}
}

def path(tree, id):
    """Returns a stringified sequence of node names along a path 
    in the 'tree' from a leaf node with 'id' to a root node."""
    if tree[id]['parent'] == None:
        return tree[id]['name']
    else:
        return ', '.join([tree[id]['name'], path(tree[id]['parent'])])


path(tree, 4) # 'Пекин, Китай, Евразия, Земля'

Исходная версия Nervous, :

Псс, дружище, не хочешь немного рекурсии?

tree = {
    1: {'name': 'Земля', 'parent': None},
    2: {'name': 'Евразия', 'parent': 1},
    3: {'name': 'Китай', 'parent': 2},
    4: {'name': 'Пекин', 'parent': 3},
    5: {'name': 'Австралия', 'parent': 1},
    6: {'name': 'Сидней', 'parent': 5}
}

def path(id):
    """Returns a stringified sequence of node names along a path 
    in the 'tree' from a leaf node with 'id' to a root node."""
    if tree[id]['parent'] == None:
        return tree[id]['name']
    else:
        return ', '.join([tree[id]['name'], path(tree[id]['parent'])])


path(4) # 'Пекин, Китай, Евразия, Земля'