2013-07-15 35 views
0

我正在研究一個在線課程,其中一個問題要求我們根據列表中的索引與基於以下列表和詞典的關鍵字的理解中的薪金匹配名稱:在Python中理解理解

d = {0:1000.0, 1:1200.50, 2:990} 
names = ['Larry', 'Curly', 'Moe'] 
listdict2dict = { ... } 

期望的輸出:

{'Larry':1000.0,'Curly':1200.50,'Moe':990} 

我已經寫以下:

{names[x]:y for x in range(len(names)) for y in d.values() if x == d.keys()} 

它返回一個空集。

有人可以給我一個提示或兩個(而不是代碼答案)如何解決這個問題?

謝謝!

+0

'd.keys()'給出'd'中所有鍵的列表。當你爲'for x命名'時,x是for循環每次迭代中'names'中的一個特定鍵。因此,'x'(總是一個字符串)永遠不會是一個字典中的鍵列表(不存在任何字符串's',例如某個列表'L'的s == L')。由於if-condition總是失敗,因此最終會出現空集 – inspectorG4dget

+0

請參閱編輯x,現在它是一個整數。 – goldisfine

+0

儘管如此,'int'永遠不會等於'list',不管它們的值是什麼 – inspectorG4dget

回答

4
>>> {name: d[i] for i, name in enumerate(names)} 
{'Larry': 1000.0, 'Moe': 990, 'Curly': 1200.5} 

你不應該遍歷d.values() - 只是遍歷名稱與enumerate並使用該指數來獲得薪水d

您的編輯後:

你比較x == d.keys()仍然無法正常工作。 x現在是一個整數,與列表進行比較是沒有意義的。

我認爲你只是過分複雜。試着記住你的變量是什麼類型,以及比較是否合理。

+0

關於最後的評論,請參閱編輯。 – goldisfine