Dictionary 为什么我的条件只消除字典中的第一个键/值对?

Dictionary 为什么我的条件只消除字典中的第一个键/值对?,dictionary,conditional-statements,key-value-coding,Dictionary,Conditional Statements,Key Value Coding,我目前正在处理一个与字典相关的问题,在这个问题中,您可以编写一个函数,删除所有值大于给定数字的键/值对。代码如下: def remove_numbers_larger_than(number, dict1): for i, value in dict1.items(): if value > number : del dict1[i] return dict1 else: ret

我目前正在处理一个与字典相关的问题,在这个问题中,您可以编写一个函数,删除所有值大于给定数字的键/值对。代码如下:

def remove_numbers_larger_than(number, dict1):
    for i, value in dict1.items():
        if value > number :
            del dict1[i]
            return dict1
        else:
            return dict1


dict1 = {'animals': 6 , 'truck': 3, 'country': 2}
number = 2

print(remove_numbers_larger_than(number, dict1))

通常我希望看到输出:{'country':2},因为它是唯一一个小于给定数字的值,但我得到的是输出:{'truck':3,'country':2}。它似乎采用初始条件并删除第一个值,但随后循环停止

只有第一项被删除,因为您在for循环的第一次迭代中立即从函数返回。要循环遍历每个值,在for循环结束之前不应返回

然而,代码还有另一个问题。您正在遍历列表dict1.items,当您从字典中删除项时,该列表将发生更改。一个简单的修复方法是复制您迭代的项目列表,允许更改原始列表而不会出现问题:

for i, value in list(dict1.items()):