It sometimes happens in code that I have a list, let’s call it
stuff, and I know for certain that this list contains exactly one item. And I want to get this item and put it in a variable, call it
thing. What’s the best way to do this?
In the past I used to do this:
thing = stuff
But I think that’s not the best idiom. I came up with a better one:
(thing,) = stuff
Readability: It lets the reader know that
stuff has exactly one element.
assert: It makes Python assert that
stuff has exactly one element, so if I was wrong in my original assumption that
stuff has exactly one element, Python will shout at me before this will manifest itself as a hard-to-find bug someplace else in the program.
Hard to miss: The previous method had a
 at the end. Now, that’s easy to notice in a line as short as
thing = stuff. But what if the line was something messy like this:
thing = some_dict[my_object.get_foobar_handler()]
In this case, the
 at the end is easy to miss, because when casually glancing the code, it might seem connected to that function call or dict lookup. So the reader might miss the fact that we’re taking an item out of a list here. This would be better in this case:
(thing,) = some_dict[my_object.get_foobar_handler()]
General for any “collection” (Props to Ulrik for noting this): This method works even when
stuff is a
set or any other kind of collection.
stuff wouldn’t work on a
set doesn’t support access by index number.
Have fun programming!