列表中的整数更改为循环

时间:2017-03-18 12:19:39

标签: python python-3.x iteration

我试图学习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]

但这似乎不是解决这个问题的正确方法。发生了什么......

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

Python中的

列表从零开始 - 所以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个条目) - zip似乎几乎是原始循环版本的两倍 - 可能是因为zip是用C语言编写的。

答案 1 :(得分:0)

Python列表是从0开始的索引,即列表中的第一个元素出现在" 0"列表,列表[0]

  

您可以将week[dayNumber[n]] = dayName[n]替换为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]