2017-03-18 48 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:我已编辑回复。感谢您指出错误 –