嵌套for循环不迭代

时间:2018-04-21 12:08:19

标签: python loops nested-loops

任何人都可以帮我确定为什么这个for循环实际上不会产生我要求它的东西?我已经放了一些打印语句,但内部for循环从未实际运行,我不知道为什么。

dict1 = {"hello":1, "there":3, "sweetie": 2, "pie":3}
list1 = ["hello", "there", "sweetie", "pie"]
list2 = []

for n in list1:
    index = -1
    for j in list2:
        index+=1;
        print(n)
        print(dict1[n])
        if(dict1[n] > j):
            list2.insert(index, dict1[n])
            break



print(list2)

我通过第一个列表中的每个元素(键列表)读取此代码,然后检查第二个列表中的每个值。如果dict中键的值大于列表中找到的元素,它将在找到的元素的位置插入该dict值并中断该迭代,转到外部for循环的下一个循环。基本上,取第一个for循环中的值,找到它所在的位置,然后转到下一个找到的值,将值从最大值排序到最小值。

但我无法让这个内循环工作,我尝试了很多不同的缩进和东西无济于事。我觉得它必须简单明了但是我看不到它,我真的需要一些帮助。

list2的预期输出:

[3,3,2,1](与从最高到最低排序的键相关的值)

1 个答案:

答案 0 :(得分:0)

你可以做一个列表理解:

0.33647687803022563
5.28947562398389
True