[Python-de] Dictionarie aus Liste erzeugen

Stefan Schwarzer s.schwarzer at ndh.net
Sun Mar 3 15:46:48 EST 2002


Hallo Albert,

Albert Hermeling wrote:
> ich habe mir auch Deinen Vorschlag mal etwas genauer angeschaut, musste aber
> feststellen das es mit Python Version 2.1 nicht geht.

yep, habe ich vermutet. :-)

> > zumindest in Python 2.2 geht auch folgendes (mit Zwischenergebnissen):
> > >>> liste = ['end_button_color red', 'return_button_color blue']
> > >>> items = [item.split() for item in liste]
> > >>> items
> bis dahin funktioniert es noch
> 
> > >>> D = dict(items)
> ab hier bekomme ich folgende Fehlermeldung:
> 
> TypeError: object of type 'dictionary' is not callable
> Schade das es nicht funktioniert.

Wenn du möchtest, kannst du ja deine Python-Installation auf 2.2
aktualisieren.

Oder du könntest dir eine entsprechende Funktion selbst schreiben:

>>> def dicti(source=None):
...     new_dict = {}
...     if source is None:
...             return new_dict
...     for key, value in source:
...             new_dict[key] = value
...     return new_dict
...
>>> dicti()
{}
>>> dicti( [(1, 'a'), (2, 'b')] )
{1: 'a', 2: 'b'}

Du kannst/solltest sie dict nennen.

> > Am Rande sei erwähnt, dass dict als Variablenname etwas kritisch ist,
> > weil er die eingebaute Funktion/Factory dict verdecken kann.
> So, das was Du am Rande erwaehnst intessiert mich dann doch, was meinst Du
> mit der Funktion/Factory dict die verdeckt werden koenen?

Was das "Verdecken" angeht, meine ich etwas, was generell passieren
kann, wenn du eine "eigene" Variable so nennst wie ein eingebautes
Object. Das folgende Beispiel sollte auch unter Python 2.1 funktionieren:

Python 2.2 (#0, Dec 24 2001, 18:42:48) [EMX GCC 2.8.1] on os2emx
Type "help", "copyright", "credits" or "license" for more information.
>>> print None
None
>>> None = 1
>>> print None
1
>>> del None
>>> print None
None

In diesem Sinne ist der Name "liste" ok, aber "list" würde ich eher nicht
verwenden.

> Meinst Du damit vielleicht das Objekt "DictType"? Etwas Passenderes habe ich
> in der Fachliteratur nicht gefunden.

dict ist neu ab Python 2.2. Dahinter verbirgt sich sowohl der Typ von
Dictionary-Objeken ...

>>> d = {}
>>> type(d)
<type 'dict'>

als auch eine Factory (Fabrik), wie Christopher schon schrieb.

>>> dict()
{}
>>> dict( [(1, 'a'), (2, 'b')] )
{1: 'a', 2: 'b'}

Viele Grüße
 Stefan



More information about the Python-de mailing list