【问题标题】:My loop is stopping after first iteration我的循环在第一次迭代后停止
【发布时间】:2019-12-04 01:42:10
【问题描述】:

我正在尝试遍历列表字典并返回包含特定整数的值的键。例如,如果我在 v = 4 的情况下循环 {0: [3], 1: [3], 2: [4, 0], 3: [1], 4: [1, 0, 2, 3]},它应该返回 [2]。 但是,我的代码似乎只考虑了第一个键值对,我不明白为什么。如果整数在第一个键值对中而不在任何其他键值对中,则它可以工作。这是我制作的函数:

def whence(g, v):
    # Your code here
    lov = []
    count = 0 
    for key, value in g.items(): 
        if v in value:
            lov.append(count)
        count += 1
        print(lov)
        return lov

【问题讨论】:

  • 因为return 立即结束函数。
  • 即使修复了返回,这段代码也没有多大意义。

标签: python list loops dictionary


【解决方案1】:

你可以在一行中完成:

def whence(g, v):
    return [key for key, values in g.items() if v in values]

【讨论】:

    【解决方案2】:

    return 语句缩进太多。

    def whence(g, v):
        # Your code here
        lov = []
        count = 0 
        for key, value in g.items(): 
            if v in value:
                lov.append(count)
            count += 1
            print(lov)
        return lov
    

    【讨论】:

    • 这回答了这个问题,但是如果输入键不是从零开始的连续整数,那么由于使用了count,它将不起作用。我不明白如果键只是数字,为什么有人甚至会创建一个字典 - 也可能是一个列表列表。
    • 确实如此。代码应使用key 而不是count。通过此更改,该函数也可以处理非顺序键。
    最近更新 更多