[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