Hallo zusammen,
vielleicht ist meine Frage recht simpel - ich finde aber keine Lösung :K
Ich habe eine Liste mit ca. 4000 Zahlen (zw. 1 und 22). Nun möchte ich die Anzahl der vorhandenen Zahlen einzeln ermitteln. z.B. 45x die 1, 533x die 2 usw.
Außerdem brauche ich noch die Position der einsen, zweien usw. in der Liste.
Wie könnte ich sowas anstellen?
Viele Dank für eure Hilfe!
liste auslesen nach Kriterien
- Windsurfer
- User
- Beiträge: 11
- Registriert: Mittwoch 26. Mai 2010, 11:47
Zuletzt geändert von Windsurfer am Montag 7. Juni 2010, 13:13, insgesamt 1-mal geändert.
- b.esser-wisser
- User
- Beiträge: 272
- Registriert: Freitag 20. Februar 2009, 14:21
- Wohnort: Bundeshauptstadt B.
Das zählen geht z.B. mit collections.defaultdict():
Für alles andere poste mal mehr Details, Beispielcode etc.
hth, Jörg
Edit: Ergänzungen wegen edit des OP
Code: Alles auswählen
import collections
def count(numbers, counters=None):
if counters is None:
counters = collections.defaultdict(int)
for number in numbers:
counters[number] += 1
return counters
hth, Jörg
Edit: Ergänzungen wegen edit des OP
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Wenn du die Positionen brauchst, kannst du auch ein `defaultdict(list)` nehmen und statt hochzaehlen die aktuelle Position in die Liste der Nummer eintragen, allerdings muss man dafuer ueber die Laenge der Nummernliste iterieren.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- Windsurfer
- User
- Beiträge: 11
- Registriert: Mittwoch 26. Mai 2010, 11:47
Hi Jörg,
vielen Dank, das klappt schon mal!
Jetzt muss ich mal sehen wie ich weiter mache. Ziel der Sache ist es, aus einer Shape Datei, welche verschiedene Croptypes (in einer bestimmten Anzahl) enthält, diese auszulesen und von jedem Croptype z.B. 50% zu verwenden, und diese per random rauszupicken und damit eine neue Shape Datei zu erstellen (ogr2ogr).
bis dann
vielen Dank, das klappt schon mal!
Jetzt muss ich mal sehen wie ich weiter mache. Ziel der Sache ist es, aus einer Shape Datei, welche verschiedene Croptypes (in einer bestimmten Anzahl) enthält, diese auszulesen und von jedem Croptype z.B. 50% zu verwenden, und diese per random rauszupicken und damit eine neue Shape Datei zu erstellen (ogr2ogr).
bis dann
- Windsurfer
- User
- Beiträge: 11
- Registriert: Mittwoch 26. Mai 2010, 11:47
@ cofi
Die Idee hört sich nicht schlecht an, nur weiß ich nicht, wie ich das programmieren soll.
Und wie würdest du die Position abspeichern?
Ich arbeite erst seit ein paar Wochen mit Python, daher entschuldige meine Naive nachfrage..
lg
Die Idee hört sich nicht schlecht an, nur weiß ich nicht, wie ich das programmieren soll.
Und wie würdest du die Position abspeichern?
Ich arbeite erst seit ein paar Wochen mit Python, daher entschuldige meine Naive nachfrage..
lg
So?
Stefan
Code: Alles auswählen
import random
def setup():
numbers = []
for i in range(4000):
numbers.append(random.randint(1, 11) + random.randint(1, 11))
return numbers
def invert(numbers):
indexes = [[] for n in range(max(numbers))]
for i, n in enumerate(numbers):
indexes[n - 1].append(i)
return indexes
indexes = invert(setup())
print("Counts:")
for i, n in enumerate(indexes):
print("%d: %s" % (i + 1, len(n)))
print()
print("Indices:")
for i, n in enumerate(indexes):
print("%d: %s" % (i + 1, n))
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ahh wie konnte ich nur `enumerate` vergessen
Code: Alles auswählen
from collections import defaultdict
def count(numbers, counters=None):
if counters is None:
counters = defaultdict(list)
for i, number in enumerate(numbers):
counters[number].append(i)
return counters
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- Windsurfer
- User
- Beiträge: 11
- Registriert: Mittwoch 26. Mai 2010, 11:47
Nicht schlecht was es alles für schicke Funktionen gibt!
Wenns jemanden interessiert, kann ich nachher mal meine fertige Lösung posten.
Danke erst einmal für die super Tipps!
Wenns jemanden interessiert, kann ich nachher mal meine fertige Lösung posten.
Danke erst einmal für die super Tipps!