Использование bisect в списке кортежей?

Я пытаюсь понять, как использовать bisect в списке кортежей, например

[(3, 1), (2, 2), (5, 6)] 

Как я могу делить пополам этот список в соответствии с [1] в каждом кортеже?

 list_dict [(69, 8), (70, 8), ((65, 67), 6)] tup1,tup2 (69, 8) (70, 8) list_dict [((65, 67), 6)] fst, snd ((65, 67),) (6,) 

И я вставляю в bisect

 idx = bisect.bisect(fst, tup1[1]+tup2[1]) 

Который дает мне unorderable types: int() < tuple()

3 Solutions collect form web for “Использование bisect в списке кортежей?”

Вы можете выделить значения в отдельных списках.

 from bisect import bisect data = [(3, 1), (2, 2), (5, 6)] fst, snd = zip(*data) idx = bisect(fst, 2) 

Обратите внимание, однако, что для работы bisect ваши данные действительно должны быть заказаны …

В некоторых случаях просто

 bisect(list_of_tuples, (3, None)) 

будет достаточно.

Поскольку None будет сравнивать меньше, чем любое целое число, это даст вам индекс первого кортежа, начинающегося как минимум с 3 или len(list_of_tuples) если все они меньше 3. Обратите внимание, что list_of_tuples сортируется.

Проверьте нижнюю часть документации: http://docs.python.org/3/library/bisect.html . Если вы хотите сравнить с чем-то другим, кроме самого элемента, вы должны создать отдельный список так называемых ключей. В вашем случае список int, содержащий только [1] кортежа. Используйте этот второй список для вычисления индекса с помощью bisect. Затем используйте это для того, чтобы вставить элемент в исходное (список кортежей) и ключ ([1] кортежа) в новый список ключей (список целых чисел).

Python - лучший язык программирования в мире.