【发布时间】:2014-01-30 01:43:21
【问题描述】:
编辑:所以我发现如果我在一开始就声明它可以正常工作:
RelayPlaceHolder = [[],[],[],[],[],[],[],[],[]]
为什么不能像这样创建相同类型的空容器?空列表的数量可能会改变:
for SwimTeams in SwimTeamList:
empty = []
RelayPlaceHolder.append(empty)
这是我的老问题...
我有一个单独的字典列表的列表:
TeamAgeGroupGender[team#][swimmer#][their dictionary with a key such as {"free":19.05}]
我有一个循环,对于第一级列表中的每个团队,它会遍历该团队列表中的每个游泳者,并将与键值“free”相对应的游泳添加到名为 @987654324 的新列表中@
for SwimTeams in SwimTeamList:
empty = []
RelayPlaceHolder.append(empty)
teamid = SwimTeamList.index(SwimTeams)
print SwimTeams
print teamid
for swimmers in TeamAgeGroupGender[teamid]:
swimmerID = TeamAgeGroupGender[teamid].index(swimmers)
RelayPlaceHolder[teamid].append({SwimTeams:TeamAgeGroupGender[teamid][swimmerID]["Free"]})
print RelayPlaceHolder[teamid][0]
期望:
RelayPlaceHolder[0][*** list of swims that go with this team#0 ***]
RelayPlaceHolder[1][*** list of swims that go with team#1, ie the next teamid in the loop***]
出于某种原因,我的循环只是将游泳添加到RelayPlaceHolder[0],即使是来自第 1 队的游泳。我尝试使用打印进行故障排除,但是,teamid 索引和swimteam 名称从 #0 更改为 #1 很好,但是,我的 RelayPlaceHolder[teamid].append 仍在添加到 #0 列表而不是 #1 .我也知道这一点,因为后面代码中的键值无法在 RelayPlaceHolder[1] 中找到正确的键(因为它变成了空的)。我不确定为什么我的循环失败了。我在其他循环中使用过类似的结构...
谢谢。
【问题讨论】:
-
如果您需要定义任意数量的列表,简洁的语法是
[[] for i in range(some_number)] -
谢谢@doukremt。这正是我所需要的。