def f_rec(n): dict = OrderedDict({0: 0, 1: 1, 2: 2}) if n in dict.keys(): return dict[n] else: for i in range(3, n + 1): current_value = dict[i - 1] + dict[i - 3] dict.popitem(last=False) dict[i] = current_value return dict[n]
# сортировка по значению b = {'cat': 5, 'dog': 2, 'mouse': 4} new_b = OrderedDict(sorted(b.items(), key=lambda x: x[1])) print(new_b) # OrderedDict([('dog', 2), ('mouse', 4), ('cat', 5)]) # изменение порядка в отсортированном словаре new_b.move_to_end('mouse') print(new_b) # OrderedDict([('dog', 2), ('cat', 5), ('mouse', 4)]) new_b.move_to_end('mouse', last=False) print(new_b) # OrderedDict([('mouse', 4), ('dog', 2), ('cat', 5)]) new_b.popitem() print(new_b) # OrderedDict([('mouse', 4), ('dog', 2)]) new_b.popitem(last=False) print(new_b) # OrderedDict([('dog', 2)]) new_b['cow'] = 1 print(new_b) # OrderedDict([('dog', 2), ('cow', 1)]) добавляется всегда в конец new_b['dog'] = 8 print(new_b) # OrderedDict([('dog', 8), ('cow', 1)]) значение поменялось, а сортировка нет