2017-03-07 108 views
1
dctCourses = {1000:'Intro to IS',1505:'Fundamentals of Programming',1515:'Web Programming Overview',2550:'Visuals Basic I',2560:'Visual Basic II'} 

lstCourseKeys = [] 

index5 = 0 

for key in dctCourses: 
    lstCourseKeys.append(key) 
    index5 =index5 + 1 

lstCourseKeys.sort() 

index6 = 0 

for item in lstCourseKeys: 
    print(item) 
    index6 = index6 + 1 

lstCourseValues = [] 

index7 = 0 

for value in dctCourses: 
    lstCourseValues.append(value) 
    index7 =index7 + 1 

lstCourseValues.sort() 

index8 = 0 

for item in lstCourseValues: 
    print(item) 
    index8 = index8 + 1 

我創建了一個字典,需要創建一個存儲鍵和列表存儲值的列表,並將列表打印回列表中。當我運行上面的代碼我得到這個如何返回字典的值列表並將其填充到列表中?

1000 
1505 
1515 
2550 
2560 
1000 
1505 
1515 
2550 
2560 

看來鍵列表按預期工作,但我的價值觀清單似乎填充鍵,而不是值。我錯過了什麼,或者我需要改變什麼?

+0

正如在給定的答案:使用'iteritems'。因爲'value'只是一個變量名,所以'dctCourses'中的值不能以這種方式工作。與以前的循環沒有區別。看到[這裏](http://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops-in-python) – mikuszefski

回答

1

在第一部分,keys,您可能需要使用dctCourses.iteritems()

for key,_ in dctCourses.iteritems(): #`_` ignores the values 
    ... 

,同樣與values

for value in dctCourses.values():  # only getting values 
    ... 

輸出:

1000 
1505 
1515 
2550 
2560 
Fundamentals of Programming 
Intro to IS 
Visual Basic II 
Visuals Basic I 
Web Programming Overview 

檢查都是仍然列出:

print type(lstCourseKeys) 
print type(lstCourseValues) 
<type 'list'> 
<type 'list'> 
+0

感謝您的幫助。我還發現, 「在dctCourses爲值: lstCourseValues.append(值) index7 = index7 + 1」 改變爲「用於在dctCourses值: \t lstCourseValues.append(dctCourses.get(值)) \t index7 = index7 + 1「也一樣,儘管我認爲這是一種骯髒的做法 –

+0

歡迎。當然,我想象有很多方法可以實現它,我不知道乾淨或骯髒的東西,無論哪種方式完成工作。很高興幫助:) – davedwards

相關問題