die ersten 10 Einträge eines Dictionaries ausgeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
pktm
User
Beiträge: 8
Registriert: Dienstag 9. Januar 2007, 19:18

Mittwoch 6. Juni 2007, 11:26

Hallo!

Wie kann ich die ersten 10 Einträge eines Dictionaries ausgeben?

Grüße, pktm
blubber
User
Beiträge: 123
Registriert: Montag 19. März 2007, 09:08

Mittwoch 6. Juni 2007, 11:29

Hi,

bin da selber noch net so bewandert, aber ich weis, dass die Einträge in einer Dictionarie nicht der Reihenfolge entsprechen müssen, in der man sie hinzugefügt hat.
Als Lösung muss man daher nebenbei eine Liste führen, weil in dieser stimmt die Reihenfolge.

Gruß
BlackJack

Mittwoch 6. Juni 2007, 11:47

Falls es irgendwelche Elemente sein dürfen:

Code: Alles auswählen

from itertools import islice

for item in islice(a_dict.iteritems(), 10):
    print item
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Mittwoch 6. Juni 2007, 11:47

Wenn du die ersten 10 Ausgeben willst dann ist ein dict nicht das richtige.

Code: Alles auswählen

daten = ['lol','lal','lul','lil','foo','bar']
for x in xrange(3):
    print daten[x]
das würde die ersten 3 Einträge der liste daten aus printen.

Wie schon oben erwähnt wenn du die ersten 10 eines dicts haben willst musst du festlegen welches die ersten 10 sind und das musst du dann in einer Liste mit schreiben.
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Mittwoch 6. Juni 2007, 14:30

Moin,

einfache Frage, einfache Antwort:

Code: Alles auswählen

print d.items()[:10]
liefert eine Liste mit den ersten 10 Elementen.

Dass sie nicht unbedingt in der Reihenfolge ausgegeben werden, wie sie eingefügt wurden, liegt in der Natur ungeordneter Felder. Das ist auch nicht die Aufgabe von Dictionaries, sondern der schnelle Zugriff auf bekannte Elemente.

Grüße,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
BlackJack

Mittwoch 6. Juni 2007, 14:44

Wobei natürlich bei einem Dictionary mit einer Million Einträgen erst einmal eine Liste mit einer Million Einträgen erzeugt wird um dann davon nochmal die ersten 10 Elemente zu kopieren.

Wenn das Dictionary nicht gross ist, dann macht das nicht wirklich einen Unterschied, aber ich wollt's erwähnt haben. :-)
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Mittwoch 6. Juni 2007, 15:33

Hi,

ich wusste, dass das Argument kommt und stelle nun fest, dass ich vergaß zu erwähnen, dass dieser Ansatz nur für kleine Dicts geeignet ist. Aber bitte, man kann das auch über den Iterator machen, auch wenn man dann zwei Zeilen braucht:

Code: Alles auswählen

I = d.iteritems()
print [I.next() for i in xrange(10)]
Grüße,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
BlackJack

Mittwoch 6. Juni 2007, 15:51

Iteratorlösung gab's weiter oben schonmal mit `itertools.islice()`. :P
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Mittwoch 6. Juni 2007, 18:43

Hi Blacky,

ja schon, aber ich wollte es eben ohne extraimport machen. :P :lol:

Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Donnerstag 7. Juni 2007, 10:55

Michael Schneider hat geschrieben:Hi Blacky,

ja schon, aber ich wollte es eben ohne extraimport machen. :P :lol:

Michael
Die liest sich auch besser, für mich halt zumindest. Zum jetzigen Zeitpunkt versteh ich nicht was islice wirklich macht.

LG

rolgal_reloaded
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 7. Juni 2007, 12:58

rolgal_reloaded hat geschrieben:Die liest sich auch besser, für mich halt zumindest. Zum jetzigen Zeitpunkt versteh ich nicht was islice wirklich macht.
Das gleiche wie die Slice-Syntax, nur eben mit Generatoren. Guck mal in [wiki]Neue Features#Itertools[/wiki], dort ist es beschrieben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Donnerstag 7. Juni 2007, 13:40

Leonidas hat geschrieben:
rolgal_reloaded hat geschrieben:Die liest sich auch besser, für mich halt zumindest. Zum jetzigen Zeitpunkt versteh ich nicht was islice wirklich macht.
Das gleiche wie die Slice-Syntax, nur eben mit Generatoren. Guck mal in [wiki]Neue Features#Itertools[/wiki], dort ist es beschrieben.
Guter Tipp, danke!

@edit

Code: Alles auswählen

list(_)
Das kommt irgendwie schräg rüber....


LG

rolgal_reloaded[/code]
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Donnerstag 7. Juni 2007, 20:02

ich habe den opertator `_` auch noch nie in einem Script genutzt

Nur in der Interactiven PythonShell.

`_` ist die Variable für das letzte heraus gegebene Ergebniss des Interpretors.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Donnerstag 7. Juni 2007, 20:33

Und es ist auch kein Operator...
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Donnerstag 7. Juni 2007, 22:45

birkenfeld hat geschrieben:Und es ist auch kein Operator...
Und was ist es?
Antworten