Seite 1 von 1
liste auslesen nach Kriterien
Verfasst: Montag 7. Juni 2010, 12:57
von Windsurfer
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!
Re: liste auslesen nach Kriterien
Verfasst: Montag 7. Juni 2010, 13:12
von b.esser-wisser
Das zählen geht z.B. mit collections.defaultdict():
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
Für alles andere poste mal mehr Details, Beispielcode etc.
hth, Jörg
Edit: Ergänzungen wegen edit des OP
Re: liste auslesen nach Kriterien
Verfasst: Montag 7. Juni 2010, 13:38
von cofi
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.
Re: liste auslesen nach Kriterien
Verfasst: Montag 7. Juni 2010, 13:42
von Windsurfer
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

Re: liste auslesen nach Kriterien
Verfasst: Montag 7. Juni 2010, 13:46
von Windsurfer
@ 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
Re: liste auslesen nach Kriterien
Verfasst: Montag 7. Juni 2010, 14:49
von sma
So?
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))
Stefan
Re: liste auslesen nach Kriterien
Verfasst: Montag 7. Juni 2010, 17:05
von cofi
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
Re: liste auslesen nach Kriterien
Verfasst: Dienstag 8. Juni 2010, 10:16
von Windsurfer
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!
