Как проверить, соответствует ли список заданный структурный шаблон?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как проверить, соответствует ли список заданный структурный шаблон?

Сообщение Anonymous »

Я пытаюсь написать функцию Python, чтобы подтвердить, следует ли данное список той же структуры, что и предопределенный список «модели», который в моем конкретном случае: < /p>
model = [
["h", "P12", "P13"],
["P12", "P23", "eL"],
["P13", "P23", "eR"]
]

В словах:
  • Фиксированные элементы "H" , "el" и «er» должны появляться в разных сублистах. "P23" - произвольные элементы в зависимости от данного списка для проверки.
    Порядок элементов не имеет значения
  • Повторение элементов "H"
    test_list_1 = [
    ["h", "a2", "a3"],
    ["a2", "a4", "eL"],
    ["a3", "a4", "eR"]
    ]

    > True

    test_list_2 = [
    ["h", "h", "Y"],
    ["h", "Z", "eL"],
    ["Y", "Z", "eR"]
    ]

    > True

    test_list_3 = [
    ["h", "X", "eL"],
    ["X", "Z", "eL"],
    ["eL", "Z", "eR"]
    ]

    > True

    test_list_4 = [
    ["h", "P1", "eL"],
    ["P1", "P3", "P2"], # ❌ there is no list containing "eL"
    ["P2", "P3", "eR"]
    ]

    > False
    < /code>
    Я пробовал с Chatgpt, но следующий код не работает должным образом, и до сих пор я не могу заставить его работать: < /p>
    from collections import defaultdict

    def validate_structure(model, test_list):
    fixed_elements = {"h", "eL", "eR"}
    model_fixed_positions = {}
    placeholder_mapping = {}

    # Step 1: Identify where fixed elements appear in the model
    for i, sublist in enumerate(model):
    for item in sublist:
    if item in fixed_elements:
    model_fixed_positions[item] = i

    # Step 2: Identify where fixed elements appear in the test list
    test_fixed_positions = {}
    for i, sublist in enumerate(test_list):
    for item in sublist:
    if item in fixed_elements:
    if item in test_fixed_positions:
    return False # Each fixed element must be in a distinct sublist
    test_fixed_positions[item] = i

    # Step 3: Ensure fixed elements are in corresponding positions
    if set(model_fixed_positions.keys()) != set(test_fixed_positions.keys()):
    return False # Missing or extra fixed elements

    for key in model_fixed_positions:
    if model_fixed_positions[key] != test_fixed_positions[key]:
    return False # Fixed elements must appear in the same indexed sublists

    # Step 4: Establish and validate placeholder mapping
    for i, (model_sublist, test_sublist) in enumerate(zip(model, test_list)):
    model_placeholders = [x for x in model_sublist if x not in fixed_elements]
    test_placeholders = [x for x in test_sublist if x not in fixed_elements]

    if len(model_placeholders) != len(test_placeholders):
    return False # Different number of elements

    for m_item, t_item in zip(model_placeholders, test_placeholders):
    if m_item in placeholder_mapping:
    if placeholder_mapping[m_item] != t_item:
    return False # Inconsistent placeholder mapping
    else:
    placeholder_mapping[m_item] = t_item

    return True # Structure matches

    # Example usage:
    print(validate_structure(model, test_list_2)) # Expected: True, but returns False


    Подробнее здесь: https://stackoverflow.com/questions/794 ... al-pattern
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как проверить, соответствует ли список заданный структурный шаблон?
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как проверить, соответствует ли список заданный структурный шаблон?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как проверить, соответствует ли список заданный структурный шаблон?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как проверить, соответствует ли список заданный структурный шаблон?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Структурный конструктор без параметров и инициализаторы полей в C# 10
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»