Python dict与for循环

想要比照roll_number与sample_dict,并且从roll_number list中删掉在sample_dict未出现的数字,最后输出roll_number。 期望的输出值是[47, 69, 76, 97],各位老哥,我为什么输出的是未出现的数字,[64, 37, 83, 97]

roll_number = [47, 64, 69, 37, 76, 83, 95, 97]
sample_dict = {'Jhon':47, 'Emma':69, 'Kelly':76, 'Jason':97}

for item in roll_number:
    if item in sample_dict:
         continue
    else:
        roll_number.remove(item)
print("After removing unwanted elements from list", roll_number)
roll_number = [47, 64, 69, 37, 76, 83, 95, 97]
sample_dict = {'Jhon':47, 'Emma':69, 'Kelly':76, 'Jason':97}
lst = list(roll_number)
for item in lst:
    if item in sample_dict.values():
        continue
    else:
        roll_number.remove(item)

print("After removing unwanted elements from list:", roll_number)

img

你的if判断不太对

因为你使用的判断语句的结果可能出乎你的意料:
if item in sample_dict

sample_dict是一个dict类型,当我们对一个字典类型使用in的时候,实际上是去判断这个dict的keys()里面有没有包含。
所以:
if item in sample_dict 等价与 if item in sample_dict.keys()
而显然你的逻辑是想要这样 -> if item in sample_dict.values()


roll_number = [47, 64, 69, 37, 76, 83, 95, 97]
sample_dict = {'Jhon':47, 'Emma':69, 'Kelly':76, 'Jason':97}

filtered_roll_number = []
for item in roll_number:
    if item in sample_dict:
        filtered_roll_number.append(item)

roll_number = filtered_roll_number
print("After removing unwanted elements from list", roll_number)

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢