MultiLabelBinarizer() with inverse_transform()
This seems intuitive.
When we have a single-label response (Multi-Class setting), our response prior to encoding looks like:
[1, 4, 2, 3, 5]

After encoding,it becomes
[[1,0,0,0,0], [0,0,0,1,0], [0,1,0,0,0], [0,0,1,0,0], [0,0,0,0,1]]

Indicating the presence of ith Class. But only one.
Similarly, in a multi-label setting-
Input should be - [[1,2,5], [4,1], [2,3] [3], [5,4]]
Encoded value   - [[1,1,0,0,1], [1,0,0,1,0], [0,1,1,0,0], [0,0,1,0,0], [0,0,0,1,1]]
Indicating the presence of (i,j,k)th Classes. Can be many
There is no need to keep duplicate values in the data before encoding.
The inverse function will work in the same way.

The set of labels for each sample such that y[i] consists of classes_[j] for each yt[i, j] == 1.

But if you try to transform again the o/p of inverse, you will get the same encoding.
mlb.transform(zet)


array([
[1, 1, 1, 1, 1, 0, 0, 0, 0, 0],
[1, 1, 0, 0, 0, 0, 1, 0, 0, 0],
   [1, 1, 0, 1, 0, 1, 0, 0, 0, 0],
[1, 1, 0, 0, 1, 0, 0, 0, 0, 0],
[1, 1, 0, 0, 0, 0, 0, 0, 1, 0],
[1, 1, 0, 0, 0, 0, 1, 0, 0, 0],
 [1, 0, 1, 0, 0, 0, 0, 1, 0, 0],
 [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0, 1, 0, 0, 0]])