
Hallo Benedikt, On 2012-11-25 01:15, Benedikt Schwarz wrote:
Am 24.11.2012 23:28, schrieb Mike Müller:
Am 24.11.12 22:31, schrieb Benedikt Schwarz:
== Frage == Wie bekommt man mehr als 2 Spalten bei Dictionaries?
Eine Lösung wäre sicher ein Dictionary mit Tupeln als Wert:
d = {'a': ('werta1', 'werta2'), 'b': ('wertb1', 'wertb2')}
ich wusste noch nicht, das man die auch verschachteln kann.
Bis zu welchem Grad kann man Dictionaries, Listen, Tupeln, usw. ineinander verschachteln? Gibt es da eine Grenze?
soweit ich weiß, nicht. Aber bei mehr als zwei Ebenen wird es ohnehin recht unübersichtlich.
Dann lasse ich mal die Katze aus dem Sack: Es geht um die Abkürzung von chemischen Elementen in der einen Spalte, den vollen Namen in einer weiteren Spalte, die Eigenschaften in der nächsten Spalte und zu guter Letzt die lateinische Ursprungsbezeichnung in der vierten Spalte.
Dazu noch ein paar Berechnungen und das Ganze verpackt hinter einer Tkinter GUI.
Was wäre denn dann der Schlüssel (Key) des Dictionarys? Statt der Tupel oder Listen würde ich hier eine Klasse für die Eigenschaften benutzen: # Don't use just `Element` since this is used for so many # other things. class ChemicalElement(object): def __init__(self, symbol, molar_mass, latin_name=None): self.symbol = symbol # Molar mass in g/mol self.molar_mass = molar_mass self.latin_name = latin_name iron = ChemicalElement(u"Fe", 55.85, u"Ferrum") print iron.symbol # -> Fe print iron.molar_mass # -> 55.85 print iron.latin_name # -> Ferrum Nebenbei siehst du dabei noch den wichtigen Hinweis, bei physikalischen Eigenschaften immer die Einheit zu kommentieren. :-) Ich habe vor Urzeiten für die Simulation eines chemischen Reaktors (damals noch in C++) Code geschrieben, der so etwas erlaubte: H2 = Substance(...) O2 = Substance(...) H2_O = Substance(...) oxidation = Reaction(2 * H2 + O2 == 2 * H2_O) Das kann man auch in Python machen. :-) Viele Grüße Stefan