Python代码编译成功但运行无输出,请问是什么原因导致的?
问题原因分析
- 条件判断逻辑错误,if代码块根本没有执行
Python中in运算符优先级高于and,你写的if "name" and "age" in employees实际等价于if ("name") and ("age" in employees)。非空字符串"name"的布尔值为True,但employees是存储字典的列表,列表内的元素是两个员工字典,根本不存在字符串"age"这个成员,所以整个判断条件最终结果为False,if包裹的代码完全不会运行,自然没有任何输出。 - 即使条件成立,后续代码也会报错
你写的employees.pop("name" and "age")中,and运算会返回最后一个真值也就是字符串"age",但employees是列表类型,列表的pop()方法只能接收整数索引作为参数,传入字符串会直接抛出TypeError异常。 - 实现逻辑和需求不匹配
如果你要提取所有员工的name和age两个字段,需要遍历列表中的每个字典元素,再针对单个字典做字段提取,而不是直接对列表做成员判断和pop操作。
正确实现示例
如果你需要生成仅包含name和age字段的新员工列表,可以参考以下代码:
employees =[ { "name": "John Doe", "job": "Software Engineer", "City": "Vancouver", "age": 34, "status": "single" }, { "name": "Alicia Smith", "job": "Director", "City": "New York", "age": 38, "status": "Married" } ] keys = ["name", "age"] # 用推导式快速提取指定字段 new_employees = [{key: emp[key] for key in keys} for emp in employees] print(new_employees)
运行后输出结果为:[{'name': 'John Doe', 'age': 34}, {'name': 'Alicia Smith', 'age': 38}]
内容的提问来源于stack exchange,提问作者Rayyan Khan
相关产品推荐
相关产品推荐

