遍历python字典的一个索引

时间:2018-11-21 15:08:08

标签: python dictionary key iteration

我有一个名为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

这是问题所在,因为我想要linesclass Line的第一个键的第一个字符串,所以我必须用l_key来索引[i][0],首先迭代i=0,我得到'mid'

然后在第二次迭代i=1时,我从'south'得到l_key[1][0]

我想知道是否有办法从for循环中删除i=0i+=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

2 个答案:

答案 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])