【问题标题】:Iterate over one index of a python dict遍历 python dict 的一个索引
【发布时间】:2019-04-24 04:39:51
【问题描述】:

我有一个名为lines的python字典,它是由元组索引的,例如:('mid', 'north')('south', 'mid')('south', 'north')

lines = {('mid', 'north'): None,
         ('south', 'mid'): None,
         ('south', 'north'): None,
        }

我创建了一个变量(l_key) 来根据lines dict 的键生成元组。

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

这是问题所在,因为我想要class Linelines 的第一个键的第一个字符串,我必须用[i][0] 索引l_key,并且在第一次迭代i=0 时,我得到@ 987654336@.

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

我想知道是否有办法从 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

【问题讨论】:

    标签: python dictionary key iteration


    【解决方案1】:

    您不需要使用lines.keys(),因为for 循环会按键自动迭代

    for line in lines:
        lines[line] = Line(line[0], line[1])
    

    如您所见,这就是全部 - 您不需要任何索引 (i) 键。

    【讨论】:

      【解决方案2】:

      类似这样的:

      for i, line in enumerate(lines.keys()):
              lines[line] = Line(l_key[i][0], l_key[i][1])
      

      【讨论】:

      • 对不起,我确实首先接受了这个答案,它实际上很好用。但正如@MarianD 提到的。还有更好的方法:(
      猜你喜欢
      • 2013-06-02
      • 1970-01-01
      • 2019-07-28
      • 2018-11-29
      • 2017-12-19
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 2017-04-19
      相关资源
      最近更新 更多