Hallo, na wie gehts???-Print

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.
Antworten
DMD
User
Beiträge: 123
Registriert: Sonntag 17. Mai 2015, 03:34

Hi,
ich versuche mich grad wieder an Pyhton und
was soll ich sagen.....:)
mein code

Code: Alles auswählen

d['0'] = 'hallo'
d['1'] = 'na'
d['2'] = 'wie'
d['3'] = 'gehts?'


lauf = 0
for counter in range(0,4):
    h = "'"+str(lauf)+"'"
    print d[h]
    lauf += 1
soll

Code: Alles auswählen

hallo
na
wie
gehts?
ausspucken.
leider erhalte ich einen "exceptions.keyerror: "'0'".
kann mir jemand helfen?
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Mal sehen:

Code: Alles auswählen

In [1]: lauf = 0

In [2]: lauf
Out[2]: 0

In [3]: "'"+str(lauf)+"'"
Out[3]: "'0'"

In [4]: '0' == "'"+str(lauf)+"'"
Out[4]: False
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

DMD hat geschrieben: ich versuche mich grad wieder an Pyhton :)
kann mir jemand helfen?
Howdy! Aus welchem Tutorial stammen denn deine Übungsbeispiele?

Code: Alles auswählen

worte = ["hallo", "wie", "geht"]
for wort in worte:
    print wort
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
DMD
User
Beiträge: 123
Registriert: Sonntag 17. Mai 2015, 03:34

danke kebap,
ich möchte gern eine laufvariable für '0', '1',... erzeugen, die ich dann als d[h] mit h = '0', '1',... einsetzen kann.
das problem kenn ich jetzt, aber mir fällt da keine lösung ein.
DMD
User
Beiträge: 123
Registriert: Sonntag 17. Mai 2015, 03:34

oder anders gefragt:
hier ein kleiner teil meines codes:

Code: Alles auswählen

d={}
counter = 0
for e in set(minDopp):
        d['{0}'.format(counter)]  = e
        counter +=1
wie schreibe ich d['{0}'.format(counter)] = e
ohne die beiden apostrophs
d. h. irgendwie so
d[str({0}).format(counter)] = e
um?
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@DMD
Wenn Du mit `format` arbeitest, erhältst Du immer einen string:

Code: Alles auswählen

>>> '{}'.format(12)
'12'
>>> '{}'.format(12.5)
'12.5'
Das was Du in Deinem Beispiel machst, würde ich allerdings ganz ohne `format` lösen:

Code: Alles auswählen

>>> values = ['null', 'eins', 'zwei', 'drei']
>>> {str(number): value for number, value in enumerate(values)}
{'1': 'eins', '0': 'null', '3': 'drei', '2': 'zwei'}
Die built-in Funktion enumerate nimmt Dir das Nummerieren der Sequenzelemente ab und ähnlich wie eine list comprehension kannst Du auch ein dictionary erstellen.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@DMD: warum willst Du die Stringrepräsentation von Zahlen als Keys eines Dictionaries wobei die Zahlen auch noch fortlaufend hochgezählt werden? Wenn Du fortlaufende Indizes brauchst, dann nimm eine Liste!
DMD
User
Beiträge: 123
Registriert: Sonntag 17. Mai 2015, 03:34

weil ich aus einer liste (len(liste) = 8) alle einträge mit gleichem datum auslesen will.

so jetzt:

Code: Alles auswählen


reihe = [['06.10.2015', 'C. Peters', '1', '2', '3', '4', '5'],['06.10.2015', 'C. Herus', '6', '778', '8', '9', '4'],['08.10.2015', 'D. Pyhton', '15', '45', '6', '9', '-3.0'], ['08.10.2015', 'M. Block', '15', '45', '3', '9', '-6.0']]
liste = []

for eins in reihe:
    liste.append(eins[0])


minDopp=[]
i=0
while i < len(liste):
    if liste.count(liste[i])>1:
        minDopp.append(liste[i])
        reihe[i][5] = '---'
        reihe[i][6] = '---'
    i+=1

d={}

counter = 0
for e in set(minDopp):
        d[counter]  = e
        counter += 1

for j in reihe:
    for p in j:
        if p == d[0]: <---- hier soll nacheinander d[0], dann d[1], dann d[2] hin
            print p
ich brauch aber für d[0] jetzt eine laufvariable....
ps: das ist nur ein erster test, die namensvergabe ist miserabel....:)!
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@DMD: die ersten 17 Zeilen kann man auch als

Code: Alles auswählen

from collections import defaultdict

reihe = [['06.10.2015', 'C. Peters', '1', '2', '3', '4', '5'],['06.10.2015', 'C. Herus', '6', '778', '8', '9', '4'],['08.10.2015', 'D. Pyhton', '15', '45', '6', '9', '-3.0'], ['08.10.2015', 'M. Block', '15', '45', '3', '9', '-6.0']]
minDopp = defaultdict(list)
for eintrag in reihe:
    minDopp[eintrag[0]].append(eintrag)

for eintraege in minDopp.values():
    if len(eintraege) > 1:
        for eintrag in eintraege:
            eintrag[5] = eintrag[6] = '---'
Die restlichen Zeilen ergeben für mich keinen Sinn. Kannst Du nochmal genau beschreiben, was Du da erreichen willst?
DMD
User
Beiträge: 123
Registriert: Sonntag 17. Mai 2015, 03:34

ich möchte gern alle doppelt vorkommenden datum-listeneinträge ausgegeben haben, also nicht nur die beiden
mit datum '06.10.2015' sondern auch die beiden '08.10.2015'. eben alle sobald sie mehr als einmal vorkommen.
DMD
User
Beiträge: 123
Registriert: Sonntag 17. Mai 2015, 03:34

äh, also exakt das was du hier schon gepostet hast.
danke :)
Antworten