26
Апр
2018

Поиск одинакового элемента в словарях

Есть два словаря: MinIndex и TrainIndex. У них одинаковые ключи, но разное количество элементов в ключах:

MinIndex = {'ВСТАВИТЬ':   [[0, 4]], 
            'ЗАКРЫТЬ':    [[3, 8]],  
            'УДАЛИТЬ':    [[0, 6]]}

TrainIndex = {'ВСТАВИТЬ':   [0, 1, 2], 
                'ЗАКРЫТЬ':    [3, 4, 5], 
                'УДАЛИТЬ':    [6, 7, 8]}

Задача - пройтись по каждому элементу в MinIndex, найти этот элемент в TrainIndex и взять из последнего ключ, к которому принадлежит найденный элемент.
Мой вариант выглядит следующим образом (к сожалению, работает неверно):

for class_name2 in MinIndex:
    for index in MinIndex[class_name2]:
        Word = 1
        for i in index:
            for class_name_train in TrainIndex:
                ElemNumb = 0
                for lists2 in TrainIndex[class_name_train]:
                    if i == TrainIndex[class_name_train][ElemNumb]:
                        Rec = class_name_train
                        ElemNumb += 1            
            print('Тестовому слову', Word, 'из класса', class_name2,'соответствует слово', Rec, '(по индексу', i, ')')
            Word += 1

Out[1]:

    Тестовому слову 1 из класса ВСТАВИТЬ соответствует слово ВСТАВИТЬ (по индексу 0 )
    Тестовому слову 2 из класса ВСТАВИТЬ соответствует слово ВСТАВИТЬ (по индексу 4 )
    Тестовому слову 1 из класса ЗАКРЫТЬ соответствует слово ЗАКРЫТЬ (по индексу 3 )
    Тестовому слову 2 из класса ЗАКРЫТЬ соответствует слово ЗАКРЫТЬ (по индексу 8 )
    Тестовому слову 1 из класса УДАЛИТЬ соответствует слово ВСТАВИТЬ (по индексу 0 )
    Тестовому слову 2 из класса УДАЛИТЬ соответствует слово УДАЛИТЬ (по индексу 6 )

Желаемый вывод выглядит следующим образом:

Тестовому слову 1 из класса ВСТАВИТЬ соответствует слово ВСТАВИТЬ (по индексу 0)
Тестовому слову 2 из класса ВСТАВИТЬ соответствует слово **ЗАКРЫТЬ** (по индексу 4)
Тестовому слову 1 из класса ЗАКРЫТЬ соответствует слово ЗАКРЫТЬ (по индексу 3)
Тестовому слову 2 из класса ЗАКРЫТЬ соответствует слово **УДАЛИТЬ** (по индексу 8)
Тестовому слову 1 из класса УДАЛИТЬ соответствует слово ВСТАВИТЬ (по индексу 0)
Тестовому слову 2 из класса УДАЛИТЬ соответствует слово УДАЛИТЬ (по индексу 6)

Источник: https://ru.stackoverflow.com/questions/819940/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA-%D0%BE%D0%B4%D0%B8%D0%BD%D0%B0%D0%BA%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE-%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0-%D0%B2-%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8F%D1%85

Тебе может это понравится...

Добавить комментарий