Может быть проще подготовить вашу ключевую функцию, если вы выделите ее как собственную функцию вместо использования лямбды.
Также вы можете захотеть использовать OrderedDict
для поддержания порядка после сортировки:
from collections import OrderedDict
def get_keylength(v):
key, values = v
return len(key), values[0]
d = {'ATCG': [1,2,3], 'ATTT':[1,3,5], 'GCT':[2,4,8], 'TCC': [4,5,6], 'AC': [7,8,9]}
od = OrderedDict(sorted(d.items(), key=get_keylength, reverse=True))
OrderedDict ([('ATCG', [1, 2, 3]), ('ATTT', [1, 3, 5]), ('TCC', [4, 5, 6]), ('GCT', [2, 4, 8]), ('AC', [7, 8, 9])]))
Если вы хотите более чистый выводВы можете использовать pprint
(красивая печать):
import pprint
pprint.pprint(od)
OrderedDict([('ATCG', [1, 2, 3]),
('ATTT', [1, 3, 5]),
('TCC', [4, 5, 6]),
('GCT', [2, 4, 8]),
('AC', [7, 8, 9])])
# To get rid of OrderedDict you can convert back to a standard dictionary with `dict()`
pprint.pprint(dict(od))
{'AC': [7, 8, 9],
'ATCG': [1, 2, 3],
'ATTT': [1, 3, 5],
'GCT': [2, 4, 8],
'TCC': [4, 5, 6]}