Variablen nummerieren

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.
makuee
User
Beiträge: 11
Registriert: Montag 15. März 2010, 11:20

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
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Hi,

also so ungenau, wie du dein Problem beschrieben hast, wird es sehr schwer, dir zu helfen.

Vielleicht zeigst du einfach mal deinen Code?
lunar

Möchtest Du sowas:

Code: Alles auswählen

variable_1 = 'spam'
variable_2 = 'eggs'
In diesem Fall möchtest Du tatsächlich eine Liste verwenden …
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
makuee
User
Beiträge: 11
Registriert: Montag 15. März 2010, 11:20

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
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

ah ja...

http://docs.python.org/tutorial/datastr ... e-on-lists

Code: Alles auswählen

...
print photos[0].index(place), sugar
(ungetestet/so in etwa...)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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ß.
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Und enumerate ist natürlich auch schöner :oops:

Beide haben aber natürlich den Makel, dass bei 0 angefangen wird...
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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.
makuee
User
Beiträge: 11
Registriert: Montag 15. März 2010, 11:20

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
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

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:

Code: Alles auswählen

d = dict(enumerate(photos[0]))
Grüße
Gerrit
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

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.
makuee
User
Beiträge: 11
Registriert: Montag 15. März 2010, 11:20

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
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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]
makuee
User
Beiträge: 11
Registriert: Montag 15. März 2010, 11:20

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

- 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
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

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
makuee
User
Beiträge: 11
Registriert: Montag 15. März 2010, 11:20

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

Code: Alles auswählen

eingabe=raw_input("Bitte genauer werden:")
2
ü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
Zuletzt geändert von makuee am Montag 15. März 2010, 13:51, insgesamt 1-mal geändert.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

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...
Antworten