kam*_*ame 4 python collections for-loop list
我有一个包含主题的数组,每个主题都有连接时间.我想比较列表中的每个主题.如果有两个相同的科目,我想添加两个科目的时间,并且还想删除第二个科目信息(科目名称和时间).
但是如果我删除该项目,列表会变短,我会得到一个超出范围的错误.我尝试使用subjectlegth-1缩短列表,但这也行不通.
...
subjectlegth = 8
for x in range(subjectlength):
for y in range(subjectlength):
if subject[x] == subject[y]:
if x != y:
#add
time[x] = time[x] + time[y]
#delete
del time[y]
del subject[y]
subjectlength = subjectlength - 1
Run Code Online (Sandbox Code Playgroud)
如果可以的话,向后迭代:
for x in range(subjectlength - 1, -1, -1):
Run Code Online (Sandbox Code Playgroud)
并且类似地y
.
如果元素是subject
可以清洗的:
finalinfo = {}
for s, t in zip(subject, time):
finalinfo[s] = finalinfo.get(s, 0) + t
Run Code Online (Sandbox Code Playgroud)
这将导致带有subject: time
键值对的字典.
最佳做法是创建要删除的条目的新列表,并在遍历列表后删除它们:
to_del = []
subjectlength = 8
for x in range(subjectlength):
for y in range(x):
if subject[x] == subject[y]:
#add
time[x] = time[x] + time[y]
to_del.append(y)
to_del.reverse()
for d in to_del:
del subject[d]
del time[d]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11566 次 |
最近记录: |