2017-05-01 20 views
1

下のコードの辞書データの値が上書きされていますが、キーが異なっていても上書きされている可能性があります。python:辞書が上書きされています

コードの
#!/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 

出力 :

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}}} 

答えて

4

あなたは同じ辞書を再利用しているが、単に各反復で新しいものを使用します。

#!/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

素晴らしい!!! ... .thnx Daniel !! .. .. –