Форум сайта python.su
0
Доброго времени суток уважаемые форумчане.
Очень нужна ваша помощь с алгоритмом поиска в словаре.
К примеру есть словарь
GB = {387:387000.00, 385:384638.48, 384:383209.20, 381:380876.15, 378:378479.63}
Офлайн
47
Если встречаются слова “порядок” и “цикл for” то тебе не нужен словарь. Используй список.
Офлайн
88
denveren0k, а что должен выдать алгоритм в случае присутствия искомого значения в словаре?
Офлайн
253
ShamanОткуда известно? Это не так.
Известно что в словаре все числа идут от большего к меньшему по порядку
Офлайн
0
После того как два близких значения будут найдены с их ключами и с самими значениями будут вестись расчеты согласно формулам.
bismigalisС радостью бы использовал. если бы и ключи не были нужны , 384:383209.20 с ключем 384 и значением 383209.20 будут выполняться определенные манипуляции.
Если встречаются слова “порядок” и “цикл for” то тебе не нужен словарь. Используй список.

Офлайн
0
doza_andПочему не так, я привел вырезку из словаря, далее по порядку идет убывание.
Офлайн
47
список больщой вообще?
Офлайн
25
from operator import itemgetter GB = { 387: 387000.00, 385: 384638.48, 384: 383209.20, 381: 380876.15, 378: 378479.63 } def find_approx(haystack, needle): mins, maxs = [], [] for k, v in haystack.iteritems(): (mins if v < needle else maxs).append((k, v)) min_max = min(maxs, key=itemgetter(1)) max_min = max(mins, key=itemgetter(1)) return (max_min, min_max) left, right = find_approx(GB, 384500) print 'Neighbours: {} and {}'.format(left, right)
Офлайн
88
Если в неизменном и достаточно объёмном словаре поиск будет вестись несколько раз, имеет смысл создать его обёрнутую копию, в которой ключи и значения обменяются ролями. Далее в нём производить поиск половинным делением.
Офлайн
0
Всем спасибо за помощь код s0rg очень помог.
bismigalisДа довольно таки большой, больше 200-ста значений.
список больщой вообще?
Офлайн