Я использую словари как своего рода «базу данных», поэтому мне нужно найти ключ, который я могу использовать повторно. В моем случае, если значение ключа None
, тогда я могу взять его и использовать повторно без необходимости «выделять» другой идентификатор. Просто решил, что поделюсь этим.
db = {0:[], 1:[], ..., 5:None, 11:None, 19:[], ...}
keys_to_reallocate = [None]
allocate.extend(i for i in db.iterkeys() if db[i] is None)
free_id = keys_to_reallocate[-1]
Мне нравится этот, потому что мне не нужно пытаться ловить какие-либо ошибки, такие как StopIteration
или IndexError
. Если есть доступный ключ, то free_id
будет содержать его. Если нет, то это будет просто None
. Возможно, не питон, но я действительно не хотел использовать try
здесь ...