Seite 1 von 2
Variablen nummerieren
Verfasst: Montag 15. März 2010, 11:33
von makuee
Hallo zusammen,
bin nicht gerade ein Programmierprofi, von daher hoffentlich eine recht einfache Frage:
ich zeih mir über eine API Daten und speicher diese als Variable
z.b.
klaus ernst
holger unernst
...
jetzt würde ich gern eine Nummerierung hinufügen
also so:
1. klaus ernst
2. holger unernst
wie bewerkstellige ich das denn am einfachsten?
Danke für Hilfe
Verfasst: Montag 15. März 2010, 11:38
von .robert
Hi,
also so ungenau, wie du dein Problem beschrieben hast, wird es sehr schwer, dir zu helfen.
Vielleicht zeigst du einfach mal deinen Code?
Verfasst: Montag 15. März 2010, 11:59
von lunar
Möchtest Du sowas:
In diesem Fall möchtest Du tatsächlich eine Liste verwenden …
Re: Variablen nummerieren
Verfasst: Montag 15. März 2010, 12:03
von /me
makuee hat geschrieben:ich zeih mir über eine API Daten und speicher diese als Variable
z.b.
klaus ernst
holger unernst
...
jetzt würde ich gern eine Nummerierung hinufügen
also so:
1. klaus ernst
2. holger unernst
Vielleicht erklärst du erst einmal den Aufbau des Programms und zeigst, wo und wie die Daten in die Variable geschrieben werden. Konkreter Beispielcode wäre schön.
Vorher kann man nur spekulieren, was für dich richtig sein könnte.
Verfasst: Montag 15. März 2010, 12:06
von makuee
gut, dann doch der code
Code: Alles auswählen
import flickrapi
api_key = '....'
eingabe=raw_input("Bitte Stadtnamen eingeben")
place = eingabe
flickr = flickrapi.FlickrAPI(api_key, cache=True)
photos = flickr.places_find(query=place)
for place in photos[0]:
sugar=place.attrib['place_id']
print sugar
ich erhalte
Code: Alles auswählen
IkEb0MefBJs0tq0
FGtXm.2bAZ2aOwdjPQ
kPLKJXSbBZ1rWfnQ
7rtlMS2aBpp7oog
ElaAIKmbBZ26Vl6a
nun möchte ich es aber gerne, dass die place_id's mit einer nummerierung versehen werde, etwa so:
1. IkEb0MefBJs0tq0
2. FGtXm.2bAZ2aOwdjPQ
3. ...
hoffentlich verständlicher
Danke
Verfasst: Montag 15. März 2010, 12:11
von .robert
Verfasst: Montag 15. März 2010, 12:11
von CM
Code: Alles auswählen
for n, place in enumerate(photos[0]):
sugar=place.attrib['place_id']
print "%d: %s" % (n, sugar)
Was aber nur die *Ausgabe* verändert und nicht die Variablen "nummeriert".
Ist das was Du wünscht?
edit: Die Lösung von .robert macht in etwas das Selbe, wird bei langen Listen aber langsamer sein, da wiederholt .index() aufgerufen werden muß.
Verfasst: Montag 15. März 2010, 12:18
von .robert
Und
enumerate ist natürlich auch schöner
Beide haben aber natürlich den Makel, dass bei 0 angefangen wird...
Verfasst: Montag 15. März 2010, 12:32
von CM
Seid python 2.6 gibt es einen start-Parameter - der OP kann auch in den Docs nachschauen ...
Aber irgendwie bin ich mir nicht ganz sicher, dass dies die gesuchte Lsg. ist.
Verfasst: Montag 15. März 2010, 12:37
von makuee
hey cm,
wie du schon fragst, würde ich gern nicht nur die Ausgabe so haben, sondern auch die Variable verändern. So das dann in "sugar" sowohl die Nummerierung wie auch die "place_id" enthalten sind.
Trotzdem danke nochmal
Verfasst: Montag 15. März 2010, 12:40
von gkuhl
CM hat geschrieben:Die Lösung von .robert [...], wird bei langen Listen aber langsamer sein, da wiederholt .index() aufgerufen werden muß.
In dem Fall bietet sich an Dictionaries zu verwenden, die hier schneller sind:
Grüße
Gerrit
Verfasst: Montag 15. März 2010, 12:42
von .robert
Da photos ja eine Liste ist, ist die Information ja schon durch die Position der Elemente in der Liste gegeben. Warum willst du das extra noch da rein schreiben?
Für Ausgaben kannst du dass ja wie oben beschrieben mit Ausgeben.
Verfasst: Montag 15. März 2010, 12:55
von makuee
hey robert,
anscheinend bin ich noch nicht ganz aus dem wochenende zurück, aber wie kann ich denn auf einen bestimmten Eintrag aus der Liste photos zugreifen. z.b. den 2ten
danke
Verfasst: Montag 15. März 2010, 12:59
von gkuhl
Verfasst: Montag 15. März 2010, 13:00
von CM
Wie wäre es Du liest erst einmal das Tutorial? Dann kannst Du
a) solch einfache Fragen in Zukunft selber klären und
b) weitergehende Fragen etwas klarer stellen.
Zur letzten Frage:
Code: Alles auswählen
some_data = [ ... ]
# access first item
some_data[0]
# access n-th item
some_data[n-1]
# access last item
some_data[-1]
Verfasst: Montag 15. März 2010, 13:07
von makuee
also nochmal,
das was ihr da hinschreibt, funktioniert nicht. ganz so dämlich bin ich nun nicht. aus dem grund schreib ich auch in dieses forum. habt ihr denn schon mal mit der flickr api gearbeitet, dann probiert es aus und schreibt nicht irgendwelche array kommandos nieder.
man man man und das zum montag
Verfasst: Montag 15. März 2010, 13:18
von CM
- Du stellst eine Frage, von der hier mehrere meinen, dass sie nicht zielführend ist.
- Du gehst nicht auf Rückfragen ein.
- Du stellst anschließend die Frage, wie man auf das zweite Element einer Liste zugreifen kann. Dieses ist Basiswissen und die erste Frage läßt ebenfalls vermuten, dass Basiswissen fehlt, weshalb wir Dich auf das Tutorial verwiesen haben. Das ist keine Arroganz von unserer Seite, sondern soll erreichen, das wir auf einem Niveau weitermachen können, auf dem Fragen sinnvoller gestellt werden können.
- Jetzt schreibst Du in einem Atemzug "funktioniert nicht" und wirst unfreundlich.
So kommen wir nicht weiter.
Also: Variablen (die es im engeren Sinne in Python nicht gibt) nummeriert man höchstens in der Ausgabe - falls das sinnvoll ist. Man kann Werte aber in einer Liste speichern. Hierbei haben sie eine bestimmte Reihenfolge - das *könnte* eine Lösung für Dein Problem sein, von dem wir nicht wissen was es ist.
Wie wäre es Du tutst Dir wirklich einmal das Tutorial an? (Das geht fix.) Und formulierst dann dasjenige, was Du *tatsächlich* erreichen willst? (Das wird wohl kaum das Umbenennen von "Variablen" sein.)
Gruß,
Christian
Verfasst: Montag 15. März 2010, 13:22
von .robert
hm, ich bin jetzt einfach mal davon ausgegangen, dass places_find eine Liste zurück gibt.
Wenn dem nicht so ist: wie sieht denn der Rückgabewert aus?
Wie gesagt, am einfachsten ist es wohl, wenn du genau beschriebst:
a) was du hast, und
b) wo du hin willst
Verfasst: Montag 15. März 2010, 13:37
von makuee
vielleicht kommen wir so weiter.
wenn meine formulierung von vorhin dir ein wenig zu flappsig vorkam, dann entschuldige ich mich dafür.
ziel:
ich möchte mit der abfrage nach der region die place_id erhalten
Code: Alles auswählen
import flickrapi
api_key = '......'
eingabe=raw_input("Bitte Stadtnamen eingeben")
place = eingabe
flickr = flickrapi.FlickrAPI(api_key, cache=True)
photos = flickr.places_find(query=place)
for n, place in enumerate(photos[0]):
sugar=place.attrib['place_id']
print sugar
nun gibt mir das ergebnis allerdings 5 verschiedene id's zurück.
aus diesen 5 id's möchte ich mir nun die passende aussuchen und diese über die eingabe 1,2,3, oder oder oder weiterverarbeiten.
also in etwa so --> ausgabe:
Code: Alles auswählen
0: IkEb0MefBJs0tq0
1: FGtXm.2bAZ2aOwdjPQ
2: kPLKJXSbBZ1rWfnQ
3: 7rtlMS2aBpp7oog
4: ElaAIKmbBZ26Vl6a
über die 2 wird nun die place_id kPLKJXSbBZ1rWfnQ in den weiteren code eingeben.
Natürlich könnte man auch einfach die place_id kopieren, aber ich wöllte es gern bedienungsfreundlicher.
Hoffe das ist nun zu verstehen.
Ciao
Verfasst: Montag 15. März 2010, 13:45
von mkesper
Hmm, der Benutzer kann anhand dieser kryptischen ID genauer aussuchen, welchen Ort er auswählen möchte? Da muss doch irgendwo noch eine menschenlesbare Bezeichnung herkommen...