2017-03-18 145 views
0

我正在嘗試學習python和做一些愚蠢的小練習,但他們幫助了很多。這次演習有我寫一個程序,使詞典用一週的天數與相應的號碼作爲重點:整數在循環列表中更改

1:週一
2日:星期二
...

這是什麼我到目前爲止:

dayNumber = [1,2,3,4,5,6,7] 
dayName = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] 
week = {} 
for n in dayNumber: 
    week[dayNumber[n]] = dayName[n] 

但是,當我運行程序時,列表中的第一個條目是2:星期二。我可以通過改變使其工作:

dayNumber = [0,1,2,3,4,5,6] 
for n in dayNumber: 
    week[dayNumber[n]+1] = dayName[n] 

但這似乎不是正確的方式來處理這個問題。這是怎麼回事...

感謝您的幫助在Python

+0

熊更換week[dayNumber[n]] = dayName[n]從零開始 - 所以DAYNAME [1]是 '星期二' 不是星期一。在你的新代碼片段中,你不需要天數[n] - 你的n變量中已經有了列表中的數字。 –

回答

1

列表從零開始 - 所以dayname[1]是「週二不Monday

在這兩個代碼片段,你不需要daynumber[n] - 您的n變量中已經有列表中的數字。 for循環爲您提供了列表中的值 - 而不是列表中的索引。

這應該工作:

dayNumber = [1,2,3,4,5,6,7] 
dayName = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] 
week = {} 
for n in dayNumber: 
    week[n] = dayName[n-1] 

甚至更​​好

dayNumber = [1,2,3,4,5,6,7] 
dayName = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] 
week = dict(zip(dayNumber, dayName)) 

大型列表(1000項) - 拉鍊似乎幾乎快兩倍,天真的for循環版本 - 可能是因爲拉鍊是用C編寫的。

+0

我想我的困惑是,我認爲for循環將從兩個列表開始在0。 Daynumber [0]和dayname [0]將是詞典 – jawohl

+0

中的第一個條目,它們始於第零個條目 - 無論條目的值如何。正如你所說的你的第二個版本確實有效 - 但僅僅是因爲你使用你的值從列表中索引回到列表中 - 在這種情況下毫無意義。正確的做法是使用'zip' - 即我的第二個解決方案。 –

+0

你能否接受這個請求 - 如果是正確的答案 –

0

Python列表是基於0的索引,即列表中的第一個元素出現在「0」位置,列表[0]

,你可以考慮在Python,列出了week[n] = dayName[n-1]

dayNumber = [1,2,3,4,5,6,7] 
dayName = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", 
"Saturday", "Sunday"] 
week = {} 
for n in dayNumber: 
    week[n] = dayName[n-1] 
+0

'dayNumber [1]'是'2' - 所以它會是另一種方式 - 不是你想要的我想的。 –

+0

@ TonySuffolk66:我已編輯回覆。感謝您指出錯誤 –