python - Why can't I make a frozeset of a list? -


when try code below:

frozenset([[]]) 

i get

traceback (most recent call last):    file "-----.-----.py", line 1, in <module>     frozenset([[]]) typeerror: unhashable type: 'list' 

why can't this?

in python, the elements of set must hashable. python docs explain:

an object hashable if has hash value never changes during lifetime (it needs hash() method), , can compared other objects (it needs eq() method). hashable objects compare equal must have same hash value.

this because set needs able efficiently perform set operations , determine if item in set or not (by comparing hash values). since list mutable , not hashable, can't put in set.

in code, if frozenset([]) fine. in case, creating frozenset of items in [] should hashable (since there aren't items in list, hashable-ness not problem). when frozenset([[]]), python tries create frozenset of items in outer list; first item in outer list list ([]) not hashable; error.


Comments

Popular posts from this blog

how to proxy from https to http with lighttpd -

android - Automated my builds -

python - Flask migration error -