Seite 1 von 1

Haare ausreißen!

Verfasst: Donnerstag 22. Oktober 2015, 19:18
von DMD
hey,
in meinem code

Code: Alles auswählen

reihe = [['05.10.2015', 'Ich', '15', '45', '9', '9', '0'], ['05.10.2015', 'finde', '15', '45', '9', '9', '0'], ['07.10.2015', 'Werder', '15', '45', '6', '9', '-3'], ['07.10.2015', 'Bremen', '15', '45', '3', '9', '-6'], ['08.10.2015', 'toll!', '15', '45', '9', '9', '0']]

minDopp = defaultdict(list)

for eintrag in reihe:
    minDopp[eintrag[0]].append(eintrag)

iST = []
eintragNULL = []
eintragLIST = []
liste = []

for eintraege in minDopp.values():
    if len(eintraege) > 1:
        for eintrag in eintraege:
                eintragNULL.append(eintrag[0])
                eintragLIST.append(eintrag[0])
                liste.append(eintrag)
                eintrag[5] = eintrag[6] = '---'

set1 = set(eintragNULL)
set2 = set(eintragLIST)
set3 = set1.intersection(set2)

found = []
for match in set3:
    found.append(match)

print liste
print found
möchte ich gern "liste" und "found" in

Code: Alles auswählen

print ["foo", "booo", "groo"].index('booo')
einbauen. brauche dabei aber wohl einen guten tipp... :)

Re: Haare ausreißen!

Verfasst: Donnerstag 22. Oktober 2015, 19:53
von Sirius3
@DMD: was glaubst Du ist der Unterschied zwischen set1, set2 oder set3 oder den Keys von minDopp? Was enthält dann wohl eintragNULL, eintragLIST oder found?

Re: Haare ausreißen!

Verfasst: Freitag 23. Oktober 2015, 11:13
von DMD
ok, ok

Code: Alles auswählen

reihe = [['05.10.2015', 'D. Olling', '15', '45', '9', '9', '0.0'], ['05.10.2015', 'D. Olling', '15', '45', '9', '9', '0.0'], ['07.10.2015', 'D. Olling', '15', '45', '6', '9', '-3.0'], ['07.10.2015', 'M. Block', '15', '45', '3', '9', '-6.0'], ['08.10.2015', 'Innenstadt Bremen', '15', '45', '9', '9', '0.0'], ['09.10.2015', '3 Stellen Westrhauderf.', '15', '45', '6', '4', '2.0'], ['12.10.2015', 'Innenstadt Bremen', '15', '45', '9', '9', '0.0'], ['13.10.2015', 'Innenstadt Bremen', '15', '45', '9', '9', '0.0'], ['14.10.2015', 'Innenstadt Bremen', '15', '45', '9', '9', '0.0'], ['19.10.2015', 'Innenstadt Bremen', '15', '45', '8', '9', '-1.0']]
minDopp = defaultdict(list)

for eintrag in reihe:
    minDopp[eintrag[0]].append(eintrag)

iST = []
eintragNULL = []
untrag = []

for eintraege in minDopp.values():
    if len(eintraege) > 1:
        for eintrag in eintraege:
                eintragNULL.append(eintrag[0])
                untrag.append(eintrag)
                eintrag[5] = eintrag[6] = '---'

set1 = set(eintragNULL)

found = []
for match in set1:
    found.append(match)

print untrag
print found


#print ["foo", "05.10.2015", "07.10.2015"].index(intexer)
besser?

Re: Haare ausreißen!

Verfasst: Freitag 23. Oktober 2015, 11:44
von DMD
ich hätte gern immer gleiche tage in verschiedenen listen:

Code: Alles auswählen

reihe = [['05.10.2015', 'D. Olling', '15', '45', '9', '9', '0.0'], ['05.10.2015', 'D. Olling', '15', '45', '9', '9', '0.0'], ['07.10.2015', 'D. Olling', '15', '45', '6', '9', '-3.0'], ['07.10.2015', 'M. Block', '15', '45', '3', '9', '-6.0'], ['08.10.2015', 'Innenstadt Bremen', '15', '45', '9', '9', '0.0'], ['09.10.2015', '3 Stellen Westrhauderf.', '15', '45', '6', '4', '2.0'], ['12.10.2015', 'Innenstadt Bremen', '15', '45', '9', '9', '0.0'], ['13.10.2015', 'Innenstadt Bremen', '15', '45', '9', '9', '0.0'], ['14.10.2015', 'Innenstadt Bremen', '15', '45', '9', '9', '0.0'], ['19.10.2015', 'Innenstadt Bremen', '15', '45', '8', '9', '-1.0']]
minDopp = defaultdict(list)

for eintrag in reihe:
    minDopp[eintrag[0]].append(eintrag)

iST = []
eintragNULL = []
untrag = []

for eintraege in minDopp.values():
    if len(eintraege) > 1:
        for eintrag in eintraege:
                eintragNULL.append(eintrag[0])
                untrag.append(eintrag)
                eintrag[5] = eintrag[6] = '---'
                #print eintrag[0]

set1 = set(eintragNULL)

found = []
for match in set1:
    found.append(match)

halo = []
for row, items in enumerate(untrag):
    for column, item in enumerate(found):
        if items[0] == item:
            print items
            istStd = float(items[4])
            halo.append(istStd)
            print halo
hab aber keinen vernünftigen ansatz :(

Re:

Verfasst: Freitag 23. Oktober 2015, 11:54
von Kebap
DMD hat geschrieben:Haare ausreißen!
brauche wohl einen guten tipp... :)
hab keinen vernünftigen ansatz :(
Wenn ich mir deine letzten paar Postings so anschaue, dreht sich sehr viel um sehr kleine Detail-Frickelei, aber es wird nie wirklich klar, wieso du auf diesem Weg bist und wo die Reise eigentlich herkommt und hingehen soll. Dann könnte man dir vielleicht deutlich leichter helfen...

Siehe auch: http://www.tty1.net/smart-questions_de.html#goal
Wenn du herausfinden willst, wie du etwas bewerkstelligen kannst (und nicht etwa einen Bug melden willst), beginne damit, dein Ziel zu beschreiben. Erst danach solltest du den Schritt, der dich aufhält, beschreiben.

Oft haben Leute einen Weg eingeschlagen, von dem sie glauben, dass er zum Ziel führt. In Wirklichkeit stecken sie aber in einer Sackgasse. Sie bitten um Hilfe mit einem bestimmten Schritt, erkennen aber nicht, dass der gewählte Weg nicht weiterführt. Es kostet dann oft viel Mühe, sie aufs richtige Gleis zu setzen.

dumm:
...Wie bringe ich den Farb-Wähler des FooDraw Zeichenprogramms dazu, einen hexadezimalen RGB-Wert anzunehmen?
intelligent:
...Ich versuche, die Farbpalette eines Bildes mit anderen Werten zu besetzen. Bis jetzt habe ich dazu jeden Tabelleneintrag verändert, aber ich kann FooDraws Farb-Wähler nicht dazu bringen, einen hexadezimalen RGB-Wert anzunehmen.

Die zweite Version der Frage ist schlauer, denn sie ermöglicht es, ein besseres Werkzeug für diese Arbeit vorzuschlagen.

Re: Haare ausreißen!

Verfasst: Freitag 23. Oktober 2015, 12:20
von DMD
hast ja recht :)
ich hätte gern die einzelnen elemente "eintrag[4]" gleicher tage addiert und als eigene liste ausgegeben.
also so jetzt:

Code: Alles auswählen

['07.10.2015', '---', '---', '---', '9', '9', '---'] # 6+3
['05.10.2015', '---', '---', '---', '18', '9', '---'] # 9+9
mein code sieht folgendermaßen aus:

Code: Alles auswählen

reihe = [['05.10.2015', 'A', '15', '45', '9', '9', '0.0'], ['05.10.2015', 'B', '15', '45', '9', '9', '0.0'], ['07.10.2015', 'C', '15', '45', '6', '9', '-3.0'], ['07.10.2015', 'D', '15', '45', '3', '9', '-6.0'], ['08.10.2015', 'E', '15', '45', '9', '9', '0.0'], ['09.10.2015', 'F', '15', '45', '6', '4', '2.0'], ['12.10.2015', 'G', '15', '45', '9', '9', '0.0'], ['13.10.2015', 'H', '15', '45', '9', '9', '0.0'], ['14.10.2015', 'I', '15', '45', '9', '9', '0.0'], ['19.10.2015', 'J', '15', '45', '8', '9', '-1.0']]
minDopp = defaultdict(list)

for eintrag in reihe:
    minDopp[eintrag[0]].append(eintrag)

iST = []
eintragNULL = []
untrag = []

for eintraege in minDopp.values():
    if len(eintraege) > 1:
        for eintrag in eintraege:
                eintragNULL.append(eintrag[0])
                untrag.append(eintrag)

set1 = set(eintragNULL)

found = []
for match in set1:
    found.append(match)

print found
print untrag

Re: Haare ausreißen!

Verfasst: Freitag 23. Oktober 2015, 12:28
von cofi
Fuer die gleichen Tage gibt es `itertools.groupby`:

Code: Alles auswählen

In [48]: import itertools

In [49]: import operator

In [50]: reihe = [['05.10.2015', 'A', '15', '45', '9', '9', '0.0'], ['05.10.2015', 'B', '15', '45', '9', '9', '0.0'], ['07.10.2015', 'C', '15', '45', '6', '9', '-3.0'], ['07.10.2015', 'D', '15', '45', '3', '9', '-6.0'], ['08.10.2015', 'E', '15', '45', '9', '9', '0.0'], ['09.10.2015', 'F', '15', '45', '6', '4', '2.0'], ['12.10.2015', 'G', '15', '45', '9', '9', '0.0'], ['13.10.2015', 'H', '15', '45', '9', '9', '0.0'], ['14.10.2015', 'I', '15', '45', '9', '9', '0.0'], ['19.10.2015', 'J', '15', '45', '8', '9', '-1.0']]

In [51]: for day, group in itertools.groupby(reihe, operator.itemgetter(0)):
    print day, list(group)
   ....:     
05.10.2015 [['05.10.2015', 'A', '15', '45', '9', '9', '0.0'], ['05.10.2015', 'B', '15', '45', '9', '9', '0.0']]
07.10.2015 [['07.10.2015', 'C', '15', '45', '6', '9', '-3.0'], ['07.10.2015', 'D', '15', '45', '3', '9', '-6.0']]
08.10.2015 [['08.10.2015', 'E', '15', '45', '9', '9', '0.0']]
09.10.2015 [['09.10.2015', 'F', '15', '45', '6', '4', '2.0']]
12.10.2015 [['12.10.2015', 'G', '15', '45', '9', '9', '0.0']]
13.10.2015 [['13.10.2015', 'H', '15', '45', '9', '9', '0.0']]
14.10.2015 [['14.10.2015', 'I', '15', '45', '9', '9', '0.0']]
19.10.2015 [['19.10.2015', 'J', '15', '45', '8', '9', '-1.0']]

Re: Haare ausreißen!

Verfasst: Freitag 23. Oktober 2015, 12:33
von BlackJack
@DMD: Die erste Frage wäre ja mal warum das Listen sind bei denen anscheinend die verschiedenen Elemente eine unterschiedliche Bedeutung haben auf die man über ”magische” Indices zugreifen muss und wo alle Elemente Zeichenketten sind, obwohl die vom Inhalt und offenbar auch von den Operationen die Du durchführen möchtest andere Typen sein sollten. Und dann immer wieder der Code auf Modulebene statt als Methoden auf vernünftigen Domänenobjekten oder mindestens mal als Funktionen. Deutlich bessere Namen wären auch schön.

Re: Haare ausreißen!

Verfasst: Freitag 23. Oktober 2015, 21:10
von DMD
@BlackJack:
ich will aus den ganzen listen eine tabelle machen und brauche dementsprechend einzelne liste, als kontoübersicht.
da kann ich dann alles was ich einzahle und abhebe eingeben und kann mir das immer die übersicht zum konto ansehen.

ich hab es so gelöst:

Code: Alles auswählen

reihe = [['05.10.2015', 'A', '15', '45', '1', '9', '0.0'], ['05.10.2015', 'B', '15', '45', '2', '9', '0.0'], ['07.10.2015', 'C', '15', '45', '3', '9', '-3.0'], ['07.10.2015', 'D', '15', '45', '4', '9', '-6.0'], ['08.10.2015', 'E', '15', '45', '9', '9', '0.0'], ['09.10.2015', 'F', '15', '45', '6', '4', '2.0'], ['12.10.2015', 'G', '15', '45', '9', '9', '0.0'], ['13.10.2015', 'H', '15', '45', '9', '9', '0.0'], ['14.10.2015', 'I', '15', '45', '9', '9', '0.0'], ['19.10.2015', 'J', '15', '45', '8', '9', '-1.0']]
minDopp = defaultdict(list)

for eintrag in reihe:
    minDopp[eintrag[0]].append(eintrag)

untrag = []
for eintraege in minDopp.values():
    if len(eintraege) > 1:
        for eintrag in eintraege:
                untrag.append(eintrag)

for index in found:
    lieste = [i for i in untrag if index in i]
    print lieste
aber wie bekomm ich denn bei den doppelt vorkommenden listen die jeweils 4ten elemente also 9 und 9 (05.10.2015) und 6 und 3 (07.10.2015) addiert?
kannst du mir da einen tipp geben cofi?

Re: Haare ausreißen!

Verfasst: Samstag 24. Oktober 2015, 13:46
von DMD
sorry :)

Code: Alles auswählen

reihe = [['05.10.2015', 'A', '15', '45', '9', '9', '0.0'], ['05.10.2015', 'B', '15', '45', '9', '9', '0.0'], ['07.10.2015', 'C', '15', '45', '6', '9', '-3.0'], ['07.10.2015', 'D', '15', '45', '3', '9', '-6.0'], ['08.10.2015', 'E', '15', '45', '9', '9', '0.0'], ['09.10.2015', 'F', '15', '45', '6', '4', '2.0'], ['12.10.2015', 'G', '15', '45', '9', '9', '0.0'], ['13.10.2015', 'H', '15', '45', '9', '9', '0.0'], ['14.10.2015', 'I', '15', '45', '9', '9', '0.0'], ['19.10.2015', 'J', '15', '45', '8', '9', '-1.0']]
minDopp = defaultdict(list)
 
for eintrag in reihe:
    minDopp[eintrag[0]].append(eintrag)
 
iST = []
eintragNULL = []
untrag = []
 
for eintraege in minDopp.values():
    if len(eintraege) > 1:
        for eintrag in eintraege:
                eintragNULL.append(eintrag[0])
                untrag.append(eintrag)
 
set1 = set(eintragNULL)
 
found = []
for match in set1:
    found.append(match)
 
print found
print untrag

Re: Haare ausreißen!

Verfasst: Samstag 24. Oktober 2015, 18:31
von Sirius3
DMD hat geschrieben:ich will aus den ganzen listen eine tabelle machen
Das erklärt aber nicht, warum dazu jedes Element der Liste wieder eine Liste sein muß, und vor allem nicht, warum Du nur Strings hast, obwohl es doch eindeutig Zahlen sind.