Python erstellen Wörterbuch Schlüssel aus einer Liste von Elementen

Ich möchte ein PythonWörterbuch verwenden, um einige laufende Aufgaben zu verfolgen. Jede dieser Aufgaben hat eine Reihe von Attributen, die es einzigartig macht, also möchte ich eine Funktion dieser Attribute verwenden, um die Wörterbuchschlüssel zu generieren, damit ich sie im Wörterbuch wieder finden kann, indem du dieselben Attribute verwende; So etwas wie folgendes:

class Task(object): def __init__(self, a, b): pass #Init task dictionary d = {} #Define some attributes attrib_a = 1 attrib_b = 10 #Create a task with these attributes t = Task(attrib_a, attrib_b) #Store the task in the dictionary, using a function of the attributes as a key d[[attrib_a, attrib_b]] = t 

Offensichtlich funktioniert das nicht (die Liste ist veränderlich und kann daher nicht als Schlüssel verwendet werden ( "unschuldig Typ: Liste" )) – also was ist die kanonische Art, einen eindeutigen Schlüssel aus mehreren bekannten Attributen zu generieren?

  • Fassen Sie eine Liste von Wörterbüchern zusammen, die auf gemeinsamen Schlüsselwerten basieren
  • Liste, die von der Kartenfunktion zurückgegeben wird, verschwindet nach einer Verwendung
  • Python nicht schreiben voller String in Datei
  • Python Recursive Suche nach Dict mit verschachtelten Tasten
  • Pythonzugriff auf wörterbuch mit wildcards
  • Python - mysqlDB, sqlite Ergebnis als Wörterbuch
  • Wie drucke ich die Schlüssel-Wert-Paare eines Wörterbuchs in Python
  • Gibt es einen Grund, nicht zu senden super () .__ init __ () ein Wörterbuch anstelle von ** kwds?
  • 2 Solutions collect form web for “Python erstellen Wörterbuch Schlüssel aus einer Liste von Elementen”

    Verwenden Sie ein Tupel anstelle der Liste. Tupel sind unveränderlich und können als Wörterbuchschlüssel verwendet werden:

     d[(attrib_a, attrib_b)] = t 

    Die Klammern können weggelassen werden:

     d[attrib_a, attrib_b] = t 

    Jedoch scheinen einige Leute diese Syntax nicht zu mögen.

    Verwenden Sie ein Tupel

     d[(attrib_a, attrib_b)] = t 

    Das sollte gut funktionieren

    Python ist die beste Programmiersprache der Welt.