[Python-de] Array als Tabelle (mit Zeilen und Spalten)?
Stefan Schwarzer
sschwarzer at sschwarzer.net
So Nov 25 10:37:38 CET 2012
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
Mehr Informationen über die Mailingliste python-de