I have a list users_with_invites_ids_list
, formed by loop where I append values to the list, in python that looks like this:
...[ObjectId('55119e14bf2e4e010d8b48f2')], [ObjectId('54624128bf2e4e5e558b5a52')], [ObjectId('53a6e7bc763f4aa0308b4569')], [ObjectId('55241823bf2e4e59508b494c')]]
when I try:
users_with_invites_ids_set = set(users_with_invites_ids_list)
I get:
TypeError: unhashable type: 'list'
How do I convert this list of lists to a set?
EDIT
based on answer I've done the following:
#convert list to set
first_tuple_list = [tuple(lst) for lst in users_with_invites_ids_list]
users_with_invites_ids_set = set(first_tuple_list)
Which yields the following:
(ObjectId('542ac5a6763f4a82188b4a51'),), (ObjectId('54496fe6bf2e4efe348bd344'),), (ObjectId('54c96339bf2e4ee62c8b48e0'),)])
How do I get each ObjectId
without the ()
around each one. It's keeping me from comparing this set to other set's of ids.
While the accepted answer is good, if you'd like something simpler for comparison and don't want to deal with the immutability of tuples, you could also try it using good old-fashioned string comparison:
You would need to convert the inner lists to tuples, assuming each of those
ObjectId('55119e14bf2e4e010d8b48f2')
is hashable:Working example:
In case if you are looking to create the set of the
ObjectId
's alone, you could do: