我正在构建一个计数器,如何在 for 循环中更新字典列表 (python)
I'm building a counter, how do I update a list of dictionaries from with in a for loop (python)
我正在计算甘特图中团队的重叠任务数,目的是将团队工作量绘制成时间序列。
过程明智:
我正在计算每个团队在每个团队专用的字典中的开始日期和结束日期之间每天的重叠任务数,然后在最后创建一个 Dataframe(有点像 [=34= 中的 sumif ] (我在学习k))
导入的数据结构 (df) 如下所示:
Task Startdate EndDate SomeotherAttribute Team
我有一些工作代码,我在其中使用了一系列 for 循环,然后在内部使用了一些 if 语句来逐一更新字典。类似于:
if team =="teamA":
count
if team =="teamB":
count
等等
但是,这很麻烦,我想遍历以下词典列表
#create blank dictionary
teamA= {}
teamB= {}
teamC= {}
teamD= {}
teamE= {}
teamF= {}
teamlist=[teamA,teamB,teamC,teamD,teamE,teamF]
#for each item test to see if test date is between start and finish
for date in testrange:
for i in df.index:
for team in teamlist:
if df.iloc[i,4]==team:
if date>df.iloc[i,1] and date<df.iloc[i,2]:
if date in team.keys():
team[date] += 1
else:
team[date] = 1
虽然我没有收到任何错误。这些词典没有按预期更新。我想我在 teamlist 列表的定义中做错了什么?
任何指点都很好
df.iloc[i,4]==team
会将 df.iloc[i,4]
与 对 (!) 您在上面定义的字典的引用进行比较。这种比较永远不会成功。
此外,该引用不知道它分配给的变量的名称。我确定您想与团队名称(即字符串)进行比较。
让我们使用一个包含键 ("names") 和值(嵌套字典)的字典:
datesByTeam = {
"teamA": {}
"teamB": {}
"teamC": {}
"teamD": {}
"teamE": {}
"teamF": {}
}
for date in testrange:
for i in df.index:
for name, team in datesByTeam.items():
if df.iloc[i,4] == name:
if date > df.iloc[i,1] and date < df.iloc[i,2]:
if date in team.keys():
team[date] += 1
else:
team[date] = 1
我正在计算甘特图中团队的重叠任务数,目的是将团队工作量绘制成时间序列。
过程明智:
我正在计算每个团队在每个团队专用的字典中的开始日期和结束日期之间每天的重叠任务数,然后在最后创建一个 Dataframe(有点像 [=34= 中的 sumif ] (我在学习k))
导入的数据结构 (df) 如下所示:
Task Startdate EndDate SomeotherAttribute Team
我有一些工作代码,我在其中使用了一系列 for 循环,然后在内部使用了一些 if 语句来逐一更新字典。类似于:
if team =="teamA":
count
if team =="teamB":
count
等等
但是,这很麻烦,我想遍历以下词典列表
#create blank dictionary
teamA= {}
teamB= {}
teamC= {}
teamD= {}
teamE= {}
teamF= {}
teamlist=[teamA,teamB,teamC,teamD,teamE,teamF]
#for each item test to see if test date is between start and finish
for date in testrange:
for i in df.index:
for team in teamlist:
if df.iloc[i,4]==team:
if date>df.iloc[i,1] and date<df.iloc[i,2]:
if date in team.keys():
team[date] += 1
else:
team[date] = 1
虽然我没有收到任何错误。这些词典没有按预期更新。我想我在 teamlist 列表的定义中做错了什么?
任何指点都很好
df.iloc[i,4]==team
会将 df.iloc[i,4]
与 对 (!) 您在上面定义的字典的引用进行比较。这种比较永远不会成功。
此外,该引用不知道它分配给的变量的名称。我确定您想与团队名称(即字符串)进行比较。
让我们使用一个包含键 ("names") 和值(嵌套字典)的字典:
datesByTeam = {
"teamA": {}
"teamB": {}
"teamC": {}
"teamD": {}
"teamE": {}
"teamF": {}
}
for date in testrange:
for i in df.index:
for name, team in datesByTeam.items():
if df.iloc[i,4] == name:
if date > df.iloc[i,1] and date < df.iloc[i,2]:
if date in team.keys():
team[date] += 1
else:
team[date] = 1