Estrutura de dados do Python para uma coleção de objetos com acesso aleatório com base em um atributo

Eu preciso de uma coleção de objetos que podem ser pesquisados ​​por um determinado atributo (único) comum a cada um dos objetos. No momento estou usando um dicionário para atribuir a chave do dicionário ao atributo. Aqui está um exemplo do que tenho agora:

class Item():
    def __init__(self, uniq_key, title=None):
        self.key = uniq_key
        self.title = title

item_instance_1 = Item("unique_key1", title="foo")
item_instance_2 = Item("unique_key3", title="foo")
item_instance_3 = Item("unique_key2", title="foo")

item_collection = {
        item_instance_1.key: item_instance_1,
        item_instance_2.key: item_instance_2,
        item_instance_3.key: item_instance_3
        }

item_instance_1.key = "new_key"

Agora, isso parece uma solução um tanto complicada, já que a chave não é uma referência ao atributo, mas assume o valor do atributo chave na atribuição, o que significa que:

as chaves do dicionário informações duplicadas já presentes na forma do atributo objeto equando o atributo do objeto é alterado, a chave do dicionário não é atualizada.

Usar uma lista e iterar pelo objeto parece ainda mais ineficiente.

Então, existe uma estrutura de dados mais adequada do que dict para este caso em particular, uma coleção de objetos me dando acesso aleatório baseado em um determinado atributo de objeto?

Isso precisaria trabalhar com o Python 2.4, pois é com isso que estou preso (no trabalho).

Se não foi óbvio, sou novo no Python.

questionAnswers(4)

yourAnswerToTheQuestion