Seite 1 von 1
Hallo, na wie gehts???-Print
Verfasst: Montag 19. Oktober 2015, 17:49
von DMD
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
ausspucken.
leider erhalte ich einen "exceptions.keyerror: "'0'".
kann mir jemand helfen?
Re: Hallo, na wie gehts???-Print
Verfasst: Montag 19. Oktober 2015, 18:18
von pillmuncher
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
Re: Hallo, na wie gehts???-Print
Verfasst: Montag 19. Oktober 2015, 20:27
von Kebap
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
Re: Hallo, na wie gehts???-Print
Verfasst: Dienstag 20. Oktober 2015, 16:34
von DMD
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.
Re: Hallo, na wie gehts???-Print
Verfasst: Dienstag 20. Oktober 2015, 17:06
von DMD
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?
Re: Hallo, na wie gehts???-Print
Verfasst: Dienstag 20. Oktober 2015, 17:54
von mutetella
@DMD
Wenn Du mit `format` arbeitest, erhältst Du immer einen string:
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
Re: Hallo, na wie gehts???-Print
Verfasst: Dienstag 20. Oktober 2015, 17:57
von Sirius3
@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!
Re: Hallo, na wie gehts???-Print
Verfasst: Dienstag 20. Oktober 2015, 18:06
von DMD
weil ich aus einer liste (len(liste) =

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

!
Re: Hallo, na wie gehts???-Print
Verfasst: Dienstag 20. Oktober 2015, 18:22
von Sirius3
@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?
Re: Hallo, na wie gehts???-Print
Verfasst: Mittwoch 21. Oktober 2015, 16:44
von DMD
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.
Re: Hallo, na wie gehts???-Print
Verfasst: Mittwoch 21. Oktober 2015, 16:51
von DMD
äh, also exakt das was du hier schon gepostet hast.
danke
