Python字典迭代列表

时间:2014-01-11 14:30:13

标签: python list dictionary

此代码有什么问题,返回空列表?

week = []
for d in week:
    day_num  = calendar.weekday(d.year,d.month,d.day)
    day_name = calendar.day_name[day_num]
    daydate = { "day_name":day_name,
                "day":d.day,
                "month":d.month,
                "year":d.year,
               }
    week.append(daydate)
return week

3 个答案:

答案 0 :(得分:3)

因为列表week最初是空的,所以for循环被重复零次。

答案 1 :(得分:0)

您的week列表在[]语句之前设置为for,因此循环没有任何要迭代的元素。你必须要么:

    如果已声明week = [] ,则
  • 删除此week
  • 在列表中添加元素。
  • 修复了你的代码。它可能不在你想要迭代的week上,而是在另一个变量上。

答案 2 :(得分:0)

import calendar 
from datetime import datetime  
from datetime import timedelta  

def generateDays(start_date,weeks):
   days=7*weeks
   week = []  
   for day in np.arange(days):
        a_date = pd.to_datetime(start_date + timedelta(days=int(day)))
        day_num  = calendar.weekday(a_date.year,a_date.month,a_date.day)
        day_name = calendar.day_name[day_num]
        daydate = { "day_name":day_name,
            "day":a_date.day,
            "month":a_date.month,
            "year":a_date.year,
           }
        week.append(daydate)
    return week    


print(generateDays(date.today(),2))  

输出

 [{'day_name': 'Wednesday', 'day': 16, 'month': 6, 'year': 2021}, {'day_name': 'Thursday', 'day': 17, 'month': 6, 'year': 2021}, {'day_name': 'Friday', 'day': 18, 'month': 6, 'year': 2021}, {'day_name': 'Saturday', 'day': 19, 'month': 6, 'year': 2021}, {'day_name': 'Sunday', 'day': 20, 'month': 6, 'year': 2021}, {'day_name': 'Monday', 'day': 21, 'month': 6, 'year': 2021}, {'day_name': 'Tuesday', 'day': 22, 'month': 6, 'year': 2021}, {'day_name': 'Wednesday', 'day': 23, 'month': 6, 'year': 2021}, {'day_name': 'Thursday', 'day': 24, 'month': 6, 'year': 2021}, {'day_name': 'Friday', 'day': 25, 'month': 6, 'year': 2021}, {'day_name': 'Saturday', 'day': 26, 'month': 6, 'year': 2021}, {'day_name': 'Sunday', 'day': 27, 'month': 6, 'year': 2021}, {'day_name': 'Monday', 'day': 28, 'month': 6, 'year': 2021}, {'day_name': 'Tuesday', 'day': 29, 'month': 6, 'year': 2021}]