2017-05-01 5 views
1

Der Wert der Wörterbuchdaten im folgenden Code wird überschrieben, was die Ursache für das Überschreiben sein kann, obwohl die Schlüssel unterschiedlich sind.Python: Wörterbuch wird überschrieben

#!/usr/local/bin/python2.7 
data={} 
marks = {} 
subjects = ["Tamil","English","Maths","Science","Social"] 

for i in range(1,3): 
    print 'Enter marks for student%d'%i 
    for subject in subjects: 
    marks[subject] = input("Enter the " + subject + " marks: ") 

    data[i]={'marks':marks} 
    print data 

Ausgabe des Codes:

Enter marks for student1 
Enter the Tamil marks: 10 
Enter the English marks: 20 
Enter the Maths marks: 30 
Enter the Science marks: 40 
Enter the Social marks: 50 
{1: {'marks': {'Maths': 30, 'Science': 40, 'Social': 50, 'Tamil': 10, 'English': 20}}} 
Enter marks for student2 
Enter the Tamil marks: 11 
Enter the English marks: 12 
Enter the Maths marks: 13 
Enter the Science marks: 14 
Enter the Social marks: 15 
{1: {'marks': {'Maths': 13, 'Science': 14, 'Social': 15, 'Tamil': 11, 'English': 12}}, 2: {'marks': {'Maths': 13, 'Science': 14, 'Social': 15, 'Tamil': 11, 'English': 12}}} 
{1: {'marks': {'Maths': 13, 'Science': 14, 'Social': 15, 'Tamil': 11, 'English': 12}}, 2: {'marks': {'Maths': 13, 'Science': 14, 'Social': 15, 'Tamil': 11, 'English': 12}}} 

Antwort

4

Du das gleiche Wörterbuch wieder arbeiten, verwenden Sie nur eine neue in jeder Iteration:

#!/usr/local/bin/python2.7 
data={} 
subjects = ["Tamil","English","Maths","Science","Social"] 

for i in range(1,3): 
    print 'Enter marks for student%d'%i 
    marks = {} 
    for subject in subjects: 
    marks[subject] = input("Enter the " + subject + " marks: ") 

    data[i]={'marks':marks} 
    print data 
+0

great !!! ... .thnx Daniel !! .. –

Verwandte Themen