У меня есть список, составленный из кортежей, таких как приведенный ниже:
(2809.3994479562093, 1032.5989696312365, 0.0), {'level': '2', 'id': '1'})
имея набор различных значений для ключа уровня в словаре (увеличивая, но не всегда целые числа, то есть 1, 2, 3, 3B, 4A, 5, 5A, 6, 7), идентификатор увеличивается постепенно и состоит только из целых чисел.
То, что я пытаюсь выяснить, это значение первых двух значений в первом элементе кортежа, то есть с плавающей запятой 2809.399 ... и 1032.5989 ... в случае уровня +/- 1 отличается от тех, на которых я сейчас нахожусь.
Другими словами, уровень 2 id 1 должен искать идентификатор 1 на уровнях 1 и 3.
Вот что я придумал для этого:
for x in xrange(len(net.lifts)):
if net.lifts[x][1]["level"] == "2":
for y in xrange(len(net.lifts)):
if (net.lifts[y][1]["level"] == "1" or net.lifts[y][1]["level"] == "3") and net.lifts[y][1]["id"] == net.lifts[x][1]["id"]:
print "edge:" + str(net.lifts[x][0][:2]) + str(net.lifts[y][0][:2])
и это работает. Однако это требует от меня определения длинных операторов if для каждого случая.
Есть ли более эффективный способ (алгоритм) абстрагирования этого без создания 7 циклов if (по одному на каждый уровень)?