Best way to handle list.index(might-not-exist) in python?
There is nothing "dirty" about using try-except clause. This is the pythonic way. ValueError
will be raised by the .index
method only, because it's the only code you have there!
To answer the comment:
In Python, easier to ask forgiveness than to get permission philosophy is well established, and no index
will not raise this type of error for any other issues. Not that I can think of any.
The dict
type has a get
function, where if the key doesn't exist in the dictionary, the 2nd argument to get
is the value that it should return. Similarly there is setdefault
, which returns the value in the dict
if the key exists, otherwise it sets the value according to your default parameter and then returns your default parameter.
You could extend the list
type to have a getindexdefault
method.
class SuperDuperList(list): def getindexdefault(self, elem, default): try: thing_index = self.index(elem) return thing_index except ValueError: return default
Which could then be used like:
mylist = SuperDuperList([0,1,2])index = mylist.getindexdefault( 'asdf', -1 )