2017-12-19 13 views
0

Ich habe zwei Wörterbücher, eine wurde aus einem Dataset bevölkert, die andere ich manuell erstellt. Ich habe versucht, ein wenig Mathematik zu machen und die Ergebnisse in einem anderen Wörterbuch zu speichern. Es funktionierte in einer Online-Plattform, aber wenn ich das Jupyter-Notebook mit PyCharm betreibe, wird es nicht die richtigen Ergebnisse liefern. Irgendeine Idee warum? HierWörterbuch Mathematik in Python - Schlüssel sind da, Werte kommen leer

ist die Schaffung der beiden Wörterbuch, und der Ausgang der zwei von ihnen (das heißt, der Inhalt des Wörterbücher)

race_counts = {} 
    for race in race: 
     if race not in race_counts: 
      race_counts[race] = 1 
     else: 
      race_counts[race] += 1 

mapping = { 
'Asian/Pacific Islander': 15159516 + 674625, 
'Native American/Native Alaskan': 3739506, 
'Black': 40250635, 
'Hispanic': 44618105, 
'White': 197318956 
} 

race_counts Wörterbuch:

{'Native American/Native Alaskan': 917, 
'Black': 23296, 
'White': 66237, 
'Asian/Pacific Islander': 1326, 
'Hispanic': 9022} 

Mapping-Wörterbuch:

{'Native American/Native Alaskan': 3739506, 
'Black': 40250635, 
'White': 197318956, 
'Asian/Pacific Islander': 15834141, 
'Hispanic': 44618105} 

Hier ist die Mathematik ich versuche:

race_per_hundredk = {} 
for race in race_counts: 
    race_per_hundredk[race] = (race_counts[race]/mapping[race]) * 100000 
print(race_per_hundredk) 

nun die korrekte Ausgabe ist ich erwarte dies:

{'Asian/Pacific Islander': 8.374309664161762, 
'Black': 57.8773477735196, 
'Hispanic': 20.220491210910907, 
'Native American/Native Alaskan': 24.521955573811088, 
'White': 33.56849303419181} 

Aber Stattdessen ich dies immer:

{'Native American/Native Alaskan': 0, 
'Asian/Pacific Islander': 0 
'White': 0, 
'Black': 0, 
'Hispanic': 0} 

Die Reihenfolge der Tasten spielt keine Rolle, aber Ich bin nicht sicher, warum die Werte leer zurückgegeben werden.

Vielen Dank, Jungs/Mädels. Ich schwöre, ich werde beginnen, einige Fragen zu beantworten und zurück geben, wenn ich eine Vorstellung davon, was ich tue ...

Antwort

0

float Casting Versuchen:

race_per_hundredk = {} 
for race in race_counts: 
    race_per_hundredk[race] = (race_counts[race]/float(mapping[race])) * 100000 
print(race_per_hundredk) 
+0

, die den Trick tat. Vielen Dank! Haben Sie einen Einblick, warum ich angeben musste, dass die Schlüssel im Mapping ein Float sind? Ich bin mir nicht sicher, warum ich es dort machen musste. – lucretiuss

+0

Wenn Sie 'float' erwarten, müssen Sie diesen Trick anwenden, da' int' division return result mit 'int' type (funktioniert wie Quotient im Modulo-Betrieb) – SatanDmytro

+0

Awesome, thank you! – lucretiuss

Verwandte Themen