Эту проблему немного сложно кратко объяснить в одной строке вопроса, поэтому я начну с того, что дам свой код и скажу, что напечатанное значение - правильный результат:
valin = 4
valout = 3
gdict = {
(0,3): 0,
(1,3): 1,
(2,3): 2,
(0,4): 3,
(4,3): 4,
(0,5): 5,
(5,4): 6,
(4,6): 7,
(6,3): 8,
}
keys = list(gdict)
nin = [x for x in keys if x[0]==valin]
nout = [x for x in keys if x[1]==valout]
shared_val_from_vals = [x[1] for x in nin for y in nout if x[1]==y[0]][0]
print(shared_val_from_vals)
___________________________
6
У меня естьдва значения: валин и валут. Я ищу
- один ключ, где 0-й элемент равен валину, а
- другой ключ, где 1-й элемент равен значению и
- 1-й элемент первого ключа равен 0-му элементу второго ключа
Тогда я буду использовать это общее значение для другой части моего кода.
Хотя мой код получаетРабота сделана, этот код будет использоваться с большими словарями, поэтому я хотел бы оптимизировать эти операции, если смогу. Есть ли более питонический или вообще более краткий способ достижения этого результата?