Так как вам нужно перебирать и субдиректории (хранящиеся в значениях), вам нужен вложенный цикл.Таким образом, «скелет» выглядит так:
for k, subdic in d.items():
print(k)
# ...
print()
Сами словари являются неупорядоченными .Нам нужна структура данных, которая поддерживает порядок, например, список.Мы можем отсортировать элементы, взяв элемент value из кортежа.Таким образом, для поддиректории мы можем отсортировать его следующим образом:
sorted(subdic.items(), key=lambda x: x[1], reverse=True)
Затем нам нужно будет выполнить итерации по этим элементам и распечатать их, например:
for subk, v in sorted(subdic.items(), key=lambda x: x[1], reverse=True):
print(f'{subk} = {v}')
Таким образом, мы можем объединить два в:
for k, subdic in d.items():
print(k)
for subk, v in sorted(subdic.items(), key=lambda x: x[1], reverse=True):
print(f'{subk} = {v}')
print()