Haare ausreißen!

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

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... :)
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

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

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

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 :(
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

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.
Zuletzt geändert von Kebap am Freitag 23. Oktober 2015, 12:56, insgesamt 1-mal geändert.
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

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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

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

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
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

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