students = [
{'name': '张三', 'age': 18, 'score': 52, 'tel': '1388888998', 'gender': 'female'},
{'name': '李四', 'age': 28, 'score': 89, 'tel': '1388666666', 'gender': 'male'},
{'name': '王五', 'age': 21, 'score': 95, 'tel': '1365588889', 'gender': 'unknown'},
{'name': 'fuck', 'age': 20, 'score': 90, 'tel': '156666789', 'gender': 'unknown'},
{'name': 'chris', 'age': 17, 'score': 98, 'tel': '13777775523', 'gender': 'male'},
{'name': 'jack', 'age': 23, 'score': 52, 'tel': '13999999928', 'gender': 'female'},
{'name': 'tony', 'age': 15, 'score': 93, 'tel': '1388888888', 'gender': 'unknown'}]
#删除所有性别未知的学生
for i in students:
if i['gender'] == 'unknown':
students.remove(i)
print(students)
为啥总是有图片这种没有删掉的‘unknown’
所有unknown的人都删掉
因为你在遍历列表students的时候,students本身又发生了改变。比如遍历到第三个元素的时候,发现是unknown,把该元素删掉了,下一个元素的位置前移,变成了新的第三个,但循环认为第三个元素已经遍历过了,于是下一个开始遍历第四个,就把这个连着的元素跳过去了。这也是为什么建议不要在遍历列表的时候去改变列表长度的原因。
建议遍历列表的副本(students[:])解决此问题。
for i in students[:]:
if i['gender'] == 'unknown':
students.remove(i)
print(students)