В Python перебрать значения словаря и вычесть попеременно
Продолжаю разбираться с программированием поиска корней методом дихотомии. Вначале отделяю корни, затем уточняю. Получил сетку значений в формате словаря: {значение х: значение f(x)}. Сейчас требуется сравнить разницу смежных ключей x2-x1 и так далее. Как это можно сделать? Пока что различные варианты, которые перебробовал, не дали правильного результата. Например, ниже приведенный код дает ошибку
voc = []
for i in setka:
dif = setka[i+1]-setka[i]
voc.append(dif)
print(voc)
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Не совсем понял, хотите вы сравнить ключи или значения, но сделать и то и другое можно примерно так:
d = dict(zip(range(10),range(100,110))) # искусственный словарь для примера
for k2,k1 in zip(list(d)[1:],d):
diff_keys = k2-k1 # разность ключей
diff_vals = d[k2]-d[k1] # разность значений
Пояснения:
- При итерировании по словарю перебираются ключи словаря
- Для того, чтобы можно было сделать срез по ключам словаря, их нужно превратить в список
- Соседние элементы коллекции удобно перебирать, соединяя коллекцию саму с собой через
zipсо сдвигом
А ваш вариант не работает, потому что:
- Для того, чтобы получить индексы, итерироваться нужно по
len(range())от коллекции, а не по самой коллекции - К словарю нельзя обращаться по индексам, так что такой подход всё-равно не сработает