¿Cómo usar bisect.insort_left con una clave?
A los doctores les falta un ejemplo ... ¿Cómo se usa?bisect.insort_left)_
basado en una clave?
Intentando insertar según la clave.
bisect.insort_left(data, ('brown', 7))
pone inserto endata[0]
.
De los documentos ...
bisect.insort_left(
a, x, lo = 0, hi = len (a))
Insertarx ena en orden ordenado Esto es equivalente aa.insert(bisect.bisect_left(a, x, lo, hi), x)
asumiendo quea ya está ordenado Tenga en cuenta que la búsqueda de O (log n) está dominada por el lento paso de inserción de O (n).
Uso de la muestra:
>>> data = [('red', 5), ('blue', 1), ('yellow', 8), ('black', 0)]
>>> data.sort(key=lambda r: r[1])
>>> keys = [r[1] for r in data] # precomputed list of keys
>>> data[bisect_left(keys, 0)]
('black', 0)
>>> data[bisect_left(keys, 1)]
('blue', 1)
>>> data[bisect_left(keys, 5)]
('red', 5)
>>> data[bisect_left(keys, 8)]
('yellow', 8)
>>>
Quiero poner('brown', 7)
después('red', 5)
en la lista ordenada endata
utilizandobisect.insort_left
. Ahora mismobisect.insort_left(data, ('brown', 7))
pone('brown', 7)
adata[0]
... porque no estoy usando las teclas para insertar ... los documentos no muestran hacer inserciones usando las teclas.