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

Code: Alles auswählen

hallo
na
wie
gehts?
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:

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

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) = 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....:)!

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 :)