Iterieren über zwei Wörterbücher auf einmal und ein Ergebnis bekommen mit den Werten und Schlüsseln aus beiden
def GetSale():#calculates expected sale value and returns info on the stock with highest expected sale value
global Prices
global Exposure
global cprice
global bprice
global risk
global shares
global current_highest_sale
best_stock=' '
for value in Prices.values():
cprice=value[1]
bprice=value[0]
for keys, values in Exposure.items():
risk=values[0]
shares=values[1]
Expected_sale_value=( (cprice - bprice ) - risk * cprice) * shares
print (Expected_sale_value)
if current_highest_sale < Expected_sale_value:
current_highest_sale=Expected_sale_value
best_stock=Exposure[keys]
return best_stock +" has the highest expected sale value"
Oben ist mein code derzeit aus. Aus irgendeinem Grund, obwohl, es scheint zu tun in der ersten Schleife, dann die zweite, dann die zweite, dann die erste, dann die zweite. Es scheint zu tun, die zweite Schleife jedes mal, wenn er bekommt, um es aus, bevor Sie wieder an die erste for
Schleife. Es ist wegen dieses, daß die Antworten, die ich bekommen hab, sind nicht korrekt.
Was sollte es tun? Die Art und Weise haben Sie den code strukturiert ist, die zweite Schleife wird innerhalb des ersten, so wird es nicht die zweite Schleife einmal für jede iteration der ersten Schleife.
Beachten Sie, dass Wörterbücher sind ungeordnet. Looping über zwei Wörterbücher auf einmal in der Regel nicht sinnvoll, es sei denn, Sie haben die gleichen Schlüssel.
Ich brauche es zu tun die zweite Schleife einmal für jede iteration der ersten Schleife, da die beiden Wörterbücher sind die gleiche Länge.Ich brauche Informationen von Ihnen beiden zu berechnen Expected_sale_value. Aber aus irgendeinem Grund, wenn ich mehr als ein Schlüssel/Wert-paar in beiden Wörterbüchern die Mathematik macht seltsame Dinge und nicht immer kommen Recht
Sie haben die gleichen Schlüssel. nur die Werte sind anders
Deine Einrückung ist kaputt. Es ist unklar, was die Vertiefung in Ihre eigentlichen code ist wie; bitte korrigieren Sie Ihren Beitrag.
Beachten Sie, dass Wörterbücher sind ungeordnet. Looping über zwei Wörterbücher auf einmal in der Regel nicht sinnvoll, es sei denn, Sie haben die gleichen Schlüssel.
Ich brauche es zu tun die zweite Schleife einmal für jede iteration der ersten Schleife, da die beiden Wörterbücher sind die gleiche Länge.Ich brauche Informationen von Ihnen beiden zu berechnen Expected_sale_value. Aber aus irgendeinem Grund, wenn ich mehr als ein Schlüssel/Wert-paar in beiden Wörterbüchern die Mathematik macht seltsame Dinge und nicht immer kommen Recht
Sie haben die gleichen Schlüssel. nur die Werte sind anders
Deine Einrückung ist kaputt. Es ist unklar, was die Vertiefung in Ihre eigentlichen code ist wie; bitte korrigieren Sie Ihren Beitrag.
InformationsquelleAutor arisonu123 | 2013-12-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Frage ist ein bisschen vage, aber die Beantwortung der Titel, kannst du auch beide Schlüssel und Werte zur gleichen Zeit wie dieser:
Wirklich? Ich dachte, es ist ziemlich beschreibend, zumindest vorerst.
Können wir das auch tun, wenn die beiden Wörterbücher haben nicht die gleiche Anzahl von Schlüsseln? Ich bin mit diesem problem jetzt...
Die Länge der iterierbar
zip()
gibt gleich sein sollte, der kürzeste Eingang, so dass, wenn Sie haben, iterables in verschiedenen Größen als input, zum Beispielzip([1, 2, 3], [11, 22, 33, 44, 55])
, dann wird es noch funktioniert, aber das Ergebnis wird[(1, 11), (2, 22), (3, 33)]
. So wird der trailing-Werte von mehr iterierbar(en) werden ignoriert.Auch darauf achten, dass die Wörterbücher sind nicht geordnet, (aber
OrderedDict
s sind), also beim Durchlaufen der Wörterbücher, die Bestellung von Schlüsseln und Werten nicht sein kann, was Sie erwarten würde. (Im Allgemeinen ist es nicht in der gleichen Reihenfolge, wie wenn Sie Hinzugefügt, zum Beispiel.) Also, wenn Sie Durchlaufen zwei Wörterbücher mit den gleichen Tasten gleichzeitig, können die Tasten noch nicht einmal in der gleichen Reihenfolge angezeigt.InformationsquelleAutor aIKid
Die Frage ist nicht gut definiert, und die Antwort akzeptiert, Fehler für einige Wörterbücher. Es stützt sich auf zentrale Bestellung, die nicht garantiert sind. Hinzufügen von zusätzlichen Tasten, um ein Wörterbuch zu entfernen-Taste, oder sogar die Reihenfolge Sie Hinzugefügt werden, können auf die Bestellung.
Eine sicherere Lösung ist zu wählen, ein Wörterbuch,
d
in diesem Fall, um den Schlüssel aus, dann verwenden Sie die zum Zugriff auf das zweite Wörterbuch:Ergebnis:
Dies ist nicht komplexer als für die anderen Antworten, und ist explizit über die Tasten zugegriffen werden. Wenn Sie die Wörterbücher haben verschiedene Schlüssel kauft, sagen
d2 = {'x': 3, 'b':7, 'c': 3, 'a':9}
, konsistente Ergebnisse sind immer noch gegeben.InformationsquelleAutor user2699
Suchen, bei deinem problem würde ich vorschlagen, Sie erstellen generator-Ausdruck, navigiert die beiden Wörterbuch in Paaren und mit max mit einem benutzerdefinierten Schlüssel zu berechnen Verkaufspreis zu bewerten
expected_sale_price
und die entsprechenden LagerSample-Daten
Beispielcode
InformationsquelleAutor Abhijit