我有一个名为lines
的python字典,该字典由元组索引,例如:('mid', 'north')
,('south', 'mid')
和('south', 'north')
。
lines = {('mid', 'north'): None,
('south', 'mid'): None,
('south', 'north'): None,
}
我创建了一个变量(l_key
),以根据lines
字典的键来创建元组。
l_key = tuple(lines.keys())
i = 0
然后我通过lines.keys()
遍历字典键:
for line in lines.keys():
lines[line] = Line(l_key[i][0], l_key[i][1])
i += 1
这是问题所在,因为我想要lines
中class Line
的第一个键的第一个字符串,所以我必须用l_key
来索引[i][0]
,首先迭代i=0
,我得到'mid'
。
然后在第二次迭代i=1
时,我从'south'
得到l_key[1][0]
。
我想知道是否有办法从for循环中删除i=0
和i+=1
并以某种方式产生相同的效果吗?
EG:
for line in lines.keys() and i in range(0, len(l_key):
lines[line] = Line(l_key[i][0], l_key[i][1])
如果我使用以上版本,则lines.keys()
可能会运行3次,而range(0, len(l_key)
可能会运行3次。所以3x3 = 9次...我需要的是在lines.keys()
上运行此for循环,并在每次迭代时增加i
的值。
在下面进行工作,但是有更好的方法吗?:
i = 0
for line in lines.keys():
lines[line] = Line(l_key[i][0], l_key[i][1])
i += 1
答案 0 :(得分:1)
您不需要使用lines.keys()
,因为for
循环通过键自动迭代:
for line in lines:
lines[line] = Line(line[0], line[1])
如您所见,就这么多-键不需要任何索引(i
)。
答案 1 :(得分:0)
类似的东西:
for i, line in enumerate(lines.keys()):
lines[line] = Line(l_key[i][0], l_key[i][1])