Hallo miteinander,
ich habe eine Dict in diesem Form dict = {"a": [0, 1, 1], "b":[1, 0, 1], "c":[0, 0, 0]}.
mit der Eingabe des gewuenschten Key, will ich dessen Value invertieren: z.B. :
ConvertValues = "a" und "c"
for i in dict:
if i ==ConvertValue:
..........
.........
print dict
>>> {{"a": [1, 0, 0], "b":[1, 0, 1], "c":[1, 1, 1]}}
hat jemand eine Idee?!?1
Danke
NOT von einer Values() im Form einer Liste
Ich will ja niemandem seine Hausaufgaben wegnehmen:
Iterieren über ein Dictionary:
Laufen über alle Elemente einer Liste:
Und das Invertieren macht man schön über eine Funktion:
Vielleicht brauchst du noch das Prüfen, ob ein Element in einer Liste vorhanden ist:
Das sollte aber auch reichen.
Iterieren über ein Dictionary:
Code: Alles auswählen
for key, value in d.iteritems():
Code: Alles auswählen
for elem in liste:
Code: Alles auswählen
def invert(x):
if x==0:
...
elif x==1:
...
Code: Alles auswählen
elem in liste
Hallo,
du nimmst mir keine Hausaufgaben. mit der Konvertierung habe ich schon aber das problem liegt einfach dadrin, die konvertierte Liste in der Value zu bringen.
wie ueberschreibe ich die values von 'b' mit aa-Liste?!
das ist mein Problem
DAnke
du nimmst mir keine Hausaufgaben. mit der Konvertierung habe ich schon aber das problem liegt einfach dadrin, die konvertierte Liste in der Value zu bringen.
Code: Alles auswählen
Value = {'a':[1,1,0], 'b':[0,1,0], 'c':[0,0,0] }
convertKey ='b'
aa=[]
for i in range (len(Value)):
if Value.keys()[i]==convertKey:
Convert = Value.values()[i]
for n in Convert:
Invert = not n
aa.append(Invert)
>>> aa
[1,0,1]
das ist mein Problem
DAnke
Das habe ich auch gedacht als ich Deinen Quelltext angesehen habe.
Umständlicher geht's ja fast gar nicht mehr. Arbeite doch bitte erst einmal das Tutorial in der Python-Dokumentation durch. Der Hauptzweck von Dictionaries ist es schnell und direkt über einen Schlüssel auf den Wert zugreifen zu können. Und Du lässt Dir immer wieder Listen mit den Schlüsseln und Werten generieren über die Du dann mit einem Index zugreifst um so linear nach einem Schlüssel zu suchen.
Und wenn Du Quelltext und Ergebnisse zeigst, dann probiere Die am besten aus. Das Ergebnis von `aa` glaube ich nämlich nicht, es sei denn Du benutzt eine sehr alte Python-Version. Die logische Negation von 0 und 1 ergibt nämlich `True` und `False` und nicht 1 und 0:
Umständlicher geht's ja fast gar nicht mehr. Arbeite doch bitte erst einmal das Tutorial in der Python-Dokumentation durch. Der Hauptzweck von Dictionaries ist es schnell und direkt über einen Schlüssel auf den Wert zugreifen zu können. Und Du lässt Dir immer wieder Listen mit den Schlüsseln und Werten generieren über die Du dann mit einem Index zugreifst um so linear nach einem Schlüssel zu suchen.
Und wenn Du Quelltext und Ergebnisse zeigst, dann probiere Die am besten aus. Das Ergebnis von `aa` glaube ich nämlich nicht, es sei denn Du benutzt eine sehr alte Python-Version. Die logische Negation von 0 und 1 ergibt nämlich `True` und `False` und nicht 1 und 0:
Code: Alles auswählen
In [16]: not 0
Out[16]: True
In [17]: not 1
Out[17]: False
Die Funktion Convert ginge so:
Für so etwas spendiere ich weder einen Funktionsaufruf (der kostet durchaus CPU-Zeit) noch eine Zeile, zu der ich im Code vielleicht zurückscrollen muss. Würde so etwas machen:
Sicher nicht die optimale Lösung. Übrigens: es geht auch mit nur einer Zuweisung (wird dann aber sehr verschachtelt). Dann einfach zuweisen:
wobei natürlich die Frage ist, inwieweit Du den ganzen Aufbau von ConvertedValue brauchst.
Code: Alles auswählen
def Convert(x): return int(not x) # Python macht hier die notwendigen
# Casts (Typumwandlungen)
Code: Alles auswählen
ConvertedValues = {}
for k in Value.keys(): ConvertedValues[k]=[(int(not y) for y in Value[k])]
Code: Alles auswählen
Value[b] = ConvertedValue[a]
[color=green][size=75]Never use idle.pyw, if you need sys.stdin[/size][/color]