Самым простым и почти наверняка самым быстрым подходом является что-то вроде:
def sorted_dict(d):
keys = d.keys()
keys.sort()
for key in keys:
yield d[key]
Вы не можете сортировать, не выбирая все ключи. Извлечение всех ключей в список, а затем сортировка этого списка - наиболее эффективный способ сделать это; Сортировка списка очень быстрая, и получение списка ключей как можно быстрее. Затем вы можете либо создать новый список значений, либо выдать значения, как в примере. Имейте в виду, что вы не можете изменить dict, если итерируете его (следующая итерация потерпит неудачу), поэтому, если вы хотите изменить dict до того, как закончите с результатом sorted_dict (), заставьте его вернуть список .