Я пытаюсь сортировать словарь по списку списков. Элементы в списке списков - это ключи в словаре. Я спросил его раньше, но ответы не решили проблему.Сортировка словаря по спискам списков
Мой список входов:
mylist= [
['why', 'was', 'cinderella', 'late', 'for', 'the', 'ball', 'she', 'forgot', 'to', 'swing', 'the', 'bat'],
['why', 'is', 'the', 'little', 'duck', 'always', 'so', 'sad', 'because', 'he', 'always', 'sees', 'a', 'bill', 'in', 'front', 'of', 'his', 'face'],
['what', 'has', 'four', 'legs', 'and', 'goes', 'booo', 'a', 'cow', 'with', 'a', 'cold'],
['what', 'is', 'a', 'caterpillar', 'afraid', 'of', 'a', 'dogerpillar'],
['what', 'did', 'the', 'crop', 'say', 'to', 'the', 'farmer', 'why', 'are', 'you', 'always', 'picking', 'on', 'me']
]
Мой словарь несколько выглядит следующим образом:
myDict = {'to': [7, 11, 17, 23, 24, 25, 26, 33, 34, 37, 39, 41, 47, 48, 53, 56],
'jam': [20], 'black': [5], 'farmer': [11],
'woodchuck': [54], 'has': [14, 16, 51], 'who': [16]
}
Мой код:
def sort_by_increasing_order(mylist, myDict):
#temp = sorted(myDict, key=myDict.get)
temp = sorted(myDict, key=lambda tempKey: for tempKey in mylist, reverse=True)
return temp
Что-то вроде:
sort_by_increasing_order(['d', 'e', 'f'], {'d': [0, 1], 'e': [1, 2, 3], 'f': [4]})
result: ['f', 'e', 'd']
Так что для моего ввода образца он будет выглядеть следующим образом:
sort_by_increasing_order(mylist, myDict)
>> ['to','woodchuck','has','jam','who','farmer']
Закомментированная линия просто сортирует ключи словаря, когда я пытаюсь разобраться в списке. Мой подход неверен. Результат должен содержать список с возрастающим порядком длины индексов, как указано выше. Любое предложение.
Как вы сравниваете ключи? – Abhijit
Вы не можете сортировать словарь по ключам. Словарь по определению не отсортирован. – sashkello