我试图学习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]
但这似乎不是解决这个问题的正确方法。发生了什么......
感谢您的帮助
答案 0 :(得分: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个条目) - 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]