Вы хотите отсортировать списки списков в значениях словаря, не порядок словарных ключей .Для этого вы можете использовать словарь:
res = {k: sorted(v, key=lambda x: x[1]) for k, v in test_dict.items()}
{'a': [[54, 1, 34], [2, 5, 9], [1, 6, 8]],
'b': [[2, 1, 9], [54, 2, 34], [1, 3, 8]],
'c': [[1, 1, 8], [54, 7, 34], [2, 9, 9]]}
Для функционального эквивалента вы можете использовать key=operator.itemgetter(1)
.В Python 3.6+ ваш словарный порядок должен поддерживаться.До версии 3.6 словари не упорядочены, и вы не должны ожидать какого-либо определенного порядка ключей.
Для заказа по ключу вы можете использовать collections.OrderedDict
:
from collections import OrderedDict
res_ordered = OrderedDict(sorted(res.items(), key=lambda x: x[0]))
OrderedDict([('a', [[54, 1, 34], [2, 5, 9], [1, 6, 8]]),
('b', [[2, 1, 9], [54, 2, 34], [1, 3, 8]]),
('c', [[1, 1, 8], [54, 7, 34], [2, 9, 9]])])