Hallo zusammen,
Ich lerne Python noch und stoße bei dem dazu verwendetem Buch (Heads first) zwischen den Kapiteln 5 und 6 auf eine Frage :
Als erstes wird einen erklärt was ein Set ist, und das man es, neben den anderen Schreibweisen, sich wie folgt direkt erzeugen und befüllen kann :
Mein_Set = {1, 'test' }
I'm nächsten Kapitel wird aber gesagt, dass die geschweiften Klammern ein Dictionary erzeugen würden:
Mein_Dict = {}
Was stimmt den nun / wie ist das zu verstehen?
Vielen Dank für die Hilfe!
Erzeugung von sets und dictionaries
@Judge: Es stimmt beides. Mit ``{1, 'test'}`` erzeugt man beispielsweise ein `set` mit zwei Elementen, und mit ``{'answer': 42}`` erzeugt man ein `dict` mit einem Schlüssel/Wert-Paar. Der Sonderfall wenn man nur die Klammern ohne Inhalt verwendet, erzeugt ein leeres `dict` und halt kein leeres `set`. Wenn man ein leeres `set` braucht, muss man das über den benannten Typ erstellen:
Code: Alles auswählen
In [13]: type({1, 'test'})
Out[13]: set
In [14]: type({'answer': 42})
Out[14]: dict
In [15]: type({})
Out[15]: dict
In [16]: type(set())
Out[16]: set
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
Intuitiver wäre vielleicht, wenn literale dicts so erstellt würden:Dann könnte man literale sets so erstellen wie derzeit dicts. Dicts gab es in Python halt schon lange vor sets, deswegen hat niemand daran gedacht, dass es mal zu solchen Fragen kommen könnte. Hätte man vielleicht auch mit Python 3 ändern können, da wäre eine weitere Imkompatibilität kaum aufgefallen
Code: Alles auswählen
some_dict = {:}
In specifications, Murphy's Law supersedes Ohm's.
Ich empfinde das als sehr angenehm, das nicht jeder Mist seinen eigenen Syntax hat. Syntaktisch kann man auch den Indexzugriff auf Listen nicht von Dictionary Zugriffen oder Zeichenketten unterscheiden.
Erstmal: Danke an alle beteiligten!
Das sind halt solche Dinge, die einen autodidaktischen Beginner erstmal verwirren. Vielen Dank für die Aufklärung!
Das sind halt solche Dinge, die einen autodidaktischen Beginner erstmal verwirren. Vielen Dank für die Aufklärung!