Předmět Autor Datum
Můžeš potom napsat, jestli to fungovalo :-D Pokud máme seznam objektů, z nichž každý má nějaké iden…
Eessencia 15.04.2023 16:55
Eessencia
Dobry den. Napsal by mi prosím někdo funkci, která získá id všech potomků ze seznamu objektů v Pytho…
gilhad 16.04.2023 14:09
gilhad
Martina, jo? To určitě, jaké jméno si vymyslíš příště? poslední
host 16.04.2023 18:24
host

Můžeš potom napsat, jestli to fungovalo :-D

Pokud máme seznam objektů, z nichž každý má nějaké identifikační číslo (ID), a některé z těchto objektů jsou potomky jiných objektů v seznamu, můžeme získat ID všech potomků takto:


def get_all_children_ids(objects_list, parent_id):
    """
    Získává ID všech potomků daného rodiče v seznamu objektů.

    :param objects_list: Seznam objektů, ve kterém hledat.
    :param parent_id: ID rodičovského objektu.
    :return: Seznam ID všech potomků daného rodiče.
    """
    children_ids = []
    for obj in objects_list:
        if obj.parent_id == parent_id:
            children_ids.append(obj.id)
            children_ids.extend(get_all_children_ids(objects_list, obj.id))
    return children_ids

Tato funkce pracuje rekurzivně. Pokud objekt v seznamu má parent_id rovno parent_id parametru funkce, pak je tento objekt potomkem a jeho ID se přidá do seznamu children_ids. Poté funkce rekurzivně volá sama sebe s ID potomka jako novým rodičem, aby získala ID všech potomků tohoto potomka. Tyto ID jsou také přidány do seznamu children_ids.

Poznámka: Tento kód předpokládá, že každý objekt v seznamu má vlastnost id a parent_id obsahující identifikátory objektů a jejich rodičů. Pokud tyto vlastnosti v seznamu objektů neexistují, bude potřeba funkci upravit.

Dobry den. Napsal by mi prosím někdo funkci, která získá id všech potomků ze seznamu objektů v Pythonu 3? Děkuji Martina

chatGPT:

Dobrý den, určitě Vám s tím mohu pomoci. Zde je funkce, která vám umožní získat ID všech potomků z vašeho seznamu objektů:

def get_children_ids(objects):
    ids = []
    for obj in objects:
        ids.append(obj.id)
        if hasattr(obj, 'children'):
            ids += get_children_ids(obj.children)
    return ids

Funkce přijímá seznam objektů a prochází každý objekt v seznamu. Pokud objekt má atribut "children", funkce rekurzivně volá sama sebe a přidá ID všech jeho potomků. Nakonec funkce vrátí seznam ID všech objektů a jejich potomků. Samozřejmě, tuto funkci je třeba upravit podle struktury vašich objektů, ale doufám, že vám to dá nápad, jak začít řešit váš problém.

Zpět do poradny Odpovědět na původní otázku Nahoru