2017-03-07 5 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 for dctCourses'は' value'が単なる変数名なので、このようには動作しません。以前のループとの違いはありません。 [こちら](http://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops-in-python) – mikuszefski

答えて

1

最初の部分、keysについて、あなたはdctCourses.iteritems()を使用することもできます。

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

出力:values

for key,_ in dctCourses.iteritems(): #`_` ignores the 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の値のために: \t lstCourseValues.append(dctCourses.get(値)) \t index7 = index7:私はまた、 " lstCourseValues.append(値) index7 = index7 + 1 dctCoursesの値は、" 変更することがわかっ+ 1 "も同様に働いていましたが、それは汚い方法であると想像しましたが、 –

+0

ようこそ。確かにそれを達成する方法はたくさんあると思いますが、私は何が清潔で汚れているのか分かりません。それは喜んで:) – davedwards

関連する問題