a {"aa": [0,1,1,1], "bb":[1,1,1,0],...}
List_min = [0,0]
List_max = [1,1]
dict = {}
.......
hier wir auf die Values aus a zugegriffen. dict will ich ertellen.
dict ist abhaengig von die values aus a:
dict sollte so aussehen :
dict = {"aa":[[0,0],[1,1],[1,1],[1,1]], "bb":[[1,1][1,1][1,1][0,0]]}
jedes einzelne Value-Objekt aus a wird abgefragt ob das 1 oder 0 ist. 
ich habe Problem mit der Bildung von dict in das gewuenschte Form.
Hat jemand ne Idee?! 
Danke
            
			
									
						
										
						schwierigkeit bei Dict-Erstellung
- 
				BlackJack
Falls es nicht darauf ankommt, dass die wertegleichen zweielementigen Listen nicht die gleiche Identität haben:
            
			
									
						
										
						Code: Alles auswählen
def main():
    a = {'aa': [0, 1, 1, 1], "bb": [1, 1, 1, 0]}
    result = dict((key, [[item, item] for item in value])
                  for key, value in a.iteritems())
    print resultdict sollte so gebildet sein, dass keys aus a uebernommen werden aber die values (if ==0) dann 
List_min wird als Element in dict['aa']....-Liste geschrieben
if==1
List_max wird dann in dict['aa']....-Liste geschrieben
dict = {"aa":[[0,0] """das ist List_min""", [1,1]"""List_max""", ....], "bb":...}
d.h. das kommt drauf an wie ich List_min und List_max definiere. das ist mein Prblem.
            
			
									
						
										
						List_min wird als Element in dict['aa']....-Liste geschrieben
if==1
List_max wird dann in dict['aa']....-Liste geschrieben
dict = {"aa":[[0,0] """das ist List_min""", [1,1]"""List_max""", ....], "bb":...}
d.h. das kommt drauf an wie ich List_min und List_max definiere. das ist mein Prblem.
- 
				BlackJack
Also kommt es darauf an, dass die Listen die selbe Identität haben und nicht nur die entsprechenden Werte enthalten!?
            
			
									
						
										
						Code: Alles auswählen
def main():
    min_max = ([0, 0], [1, 1])
    result = dict((key, [min_max[item] for item in value])
                  for key, value in a.iteritems())
    print resultja genau... wie ich sehe, verwendest du 
for item in value
die Funktion sollte in der Lage sein, nur die einzelne Elemente zu ersetzen und nicht nach Gleichheit fragen, denn min_max koennte auch sein:
min_max =([0.2, 1.12], [7.2, 18]). in diesem Fall sollte der Value-Element aus a in [0.2,1.12] in dict ersetzt werden
aber ich bekomme immer einen Syntax-Fehler beim Ausfuehren.
funktionert diese Funktion bei dir?!
EDIT(jens): Code in PY-Tags gesetzt. Bitte: http://www.python-forum.de/faq.php#21 beachten!
            
			
									
						
										
						for item in value
die Funktion sollte in der Lage sein, nur die einzelne Elemente zu ersetzen und nicht nach Gleichheit fragen, denn min_max koennte auch sein:
min_max =([0.2, 1.12], [7.2, 18]). in diesem Fall sollte der Value-Element aus a in [0.2,1.12] in dict ersetzt werden
aber ich bekomme immer einen Syntax-Fehler beim Ausfuehren.
funktionert diese Funktion bei dir?!
Code: Alles auswählen
def main():
    min_max = ([0, 0], [1, 1])
    result = dict((key, [min_max[item] for item in value])
                  for key, value in a.iteritems())
    print resultHab noch nicht ganz gecheckt was das ganze genau werden soll,
aber kann es sein das du ein solches Ergebnis suchst?
            
			
									
						
										
						aber kann es sein das du ein solches Ergebnis suchst?
Code: Alles auswählen
>>> def main():
...     a = {'aa': [0, 1, 1, 1], "bb": [1, 1, 1, 0]}
...     min_max = ([0, 0], [1, 1])
...     result = dict((key, [min_max[item] for item in value])
...                   for key, value in a.iteritems())
...     print result
...
>>> main()
{'aa': [[0, 0], [1, 1], [1, 1], [1, 1]], 'bb': [[1, 1], [1, 1], [1, 1], [0, 0]]}- 
				BlackJack
Kann es ein dass Du eine ältere Python-Version benutzt die noch keine Generator-Ausdrücke kennt?  Falls ja, versuch's mal damit:
            
			
									
						
										
						Code: Alles auswählen
def main():
    a = {'aa': [0, 1, 1, 1], "bb": [1, 1, 1, 0]}
    min_max = ([0, 0], [1, 1])
    result = dict([(key, [min_max[item] for item in value])
                   for key, value in a.iteritems()])
    print result- 
				BlackJack
Hast Du zufällig irgendwo den Namen `dict` umdefiniert?
2.2 ist aber schon sehr alt. 2.2.3 ist vor vier Jahren herausgekommen.
            
			
									
						
										
						2.2 ist aber schon sehr alt. 2.2.3 ist vor vier Jahren herausgekommen.
ja ich weiss. Das Tool gehoert dem Unternehmen wo ich meine DA schreibe. leider kann ich nichts aendern. 
Ich versuche momentan mit den ueblichen Methoden (for, if.... ) mein Ziel zu erreichen.
hast du irgendne Idee wie man das machen kann ohne die Generator-Ausdruecke zu benutzen?
            
			
									
						
										
						Ich versuche momentan mit den ueblichen Methoden (for, if.... ) mein Ziel zu erreichen.
hast du irgendne Idee wie man das machen kann ohne die Generator-Ausdruecke zu benutzen?
- sunmountain
- User
- Beiträge: 89
- Registriert: Montag 13. März 2006, 17:18
Listcomprehension ?koukoun hat geschrieben:hast du irgendne Idee wie man das machen kann ohne die Generator-Ausdruecke zu benutzen?
Sieht fast genauso aus, nur die Klammern sind eckig

- 
				BlackJack
Das haben wir ja schon versucht. Das ist nicht das Problem.
@koukoun: Du hast höchstwahrscheinlich den Namen `dict` an etwas anderes als die Funktion gebunden.
Der Code müsste auch in der 2.2 gehen:
http://www.python.org/doc/2.2.3/lib/built-in-funcs.html
            
			
									
						
										
						@koukoun: Du hast höchstwahrscheinlich den Namen `dict` an etwas anderes als die Funktion gebunden.
Der Code müsste auch in der 2.2 gehen:
http://www.python.org/doc/2.2.3/lib/built-in-funcs.html
Hallo Blackjack,
diese Methode ist nur ausfuehrbar, wenn die Values von a und b integer sind. Soblad ich die values editiere z.B. 0.0 anstatt 0, kommt eine Fehlermeldung "sequence index must be integer".
haettest du eine Idee?!
            
			
									
						
										
						diese Methode ist nur ausfuehrbar, wenn die Values von a und b integer sind. Soblad ich die values editiere z.B. 0.0 anstatt 0, kommt eine Fehlermeldung "sequence index must be integer".
haettest du eine Idee?!
- 
				BlackJack
Entweder den Index in ein `int` umwandeln, oder anstelle eines Tupels für `min_max` ein Dictionary verwenden.
            
			
									
						
										
						


