In Python 3.x:
object_dict = {x.id: x for x in object_list}
Sowohl in Python 3.x als auch in Python 2.4+:
object_dict = dict((x.id, x) for x in object_list)
(x.id, x) for x in object_list
ein Generatorausdruck ist (und netterweise nicht in Klammern eingeschlossen werden muss, wie ein Listenausdruck in Klammern eingeschlossen werden muss, wenn er als einzelnes Argument für einen Aufruf verwendet wird; das bedeutet natürlich, dass der von mir verwendete Ausdruck unter anderen Umständen ((x.id, x) for x in object_list)
). Im Gegensatz zu einem Listenverständnis wird keine tatsächliche Liste aller Elemente erzeugt, was in Situationen wie der vorliegenden effizienter ist.
Nebenbei bemerkt, hat Python eine eingebaute Methode id()
:
Gibt die "Identität" eines Objekts zurück. Dabei handelt es sich um eine ganze Zahl, die für dieses Objekt während seiner Lebensdauer garantiert eindeutig und konstant ist. Zwei Objekte mit nicht überlappender Lebensdauer können denselben id()-Wert haben. (Hinweis zur Implementierung: Dies ist die Adresse des Objekts.)
Wenn Sie also Python die IDs selbst handhaben lassen wollen, können Sie das wie folgt tun:
object_dict = {id(x): x for x in object_list}
ou
object_dict = dict((id(x), x) for x in object_list)