Как вернуть список значений, соответствующих повторяющимся ключам в словаре? - PullRequest
1 голос
/ 23 марта 2020

Я пытаюсь вернуть список списка, в котором каждый подсписок имеет значения, соответствующие ключевым словам в словаре. Например:

dictionary = {'CORRECT': ['full','mark'],'INCORRECT':['partial','mark']}

Для списка списков [['INCORRECT'],['INCORRECT','CORRECT']] он должен вернуть:

[[['partial','mark']],[['partial','mark'],['full','mark']]]

Вот что я пробовал: (ps: clean_word - функция, которую я использовал раньше , пожалуйста, игнорируйте его)

result = []
    for key in dictionary:
        word = clean_word(key)

        if word:
           result.append(dictionary[word])

    return result

Однако этот код будет возвращать результат, подобный

[['full','mark'], ['partial', 'mark']]

Порядок - беспорядок, и в нем отсутствует значение. Я предполагаю, что это потому, что у него есть ключ (НЕПРАВИЛЬНЫЙ), который повторяется в Списке, поэтому python смотрит только на первое появление ключа. Как решить эту проблему? Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 марта 2020
my_list = [['INCORRECT'],['INCORRECT','CORRECT']]
dictionary = {'CORRECT': ['full','mark'],'INCORRECT':['partial','mark']}
result = [ [dictionary[x] for x in sublist ] if isinstance(sublist, list) else dictionary[sublist] for sublist in my_list ]
0 голосов
/ 23 марта 2020

вы можете использовать понимание списка:

l = [['INCORRECT'],['INCORRECT','CORRECT']]
dictionary = {'CORRECT': ['full','mark'],'INCORRECT':['partial','mark']}

[[dictionary[e] for e in i] for i in l]

вывод:

[[['partial', 'mark']], [['partial', 'mark'], ['full', 'mark']]]
...