That seems lots of code for a simple update (and doing twice the same thing).
There is no need to create a new label if it's a new position. Just update it and move it.
example 

label = labellable.delete(position)

label.type = new_type if new_type
label.value = new_value if new_value

labellable[new_position] = label