python - 为什么 lambda 无法识别实例的属性?
问题描述
我创建了五个用于存储满足特定条件的实例的列表,并打算按实例属性“小时”对它们进行排序。我可以读取循环外的属性并单独运行这一行,没有错误。但是我运行该块,结果表明属性不存在。是什么原因造成的?我该如何解决?
File "F:/Aalto study/semester3/programming/Project_studyplan.py", line 143, in print_course
courselist.sort(key = lambda x: x.hours[0])
File "F:/Aalto study/semester3/programming/Project_studyplan.py", line 143, in <lambda>
courselist.sort(key = lambda x: x.hours[0])
AttributeError: 'list' object has no attribute 'hours'
工作簿跟踪:
In [196]: courselist[0].hours
Out[196]: (9, 10)
In [199]:courselist.sort(key = lambda x: x.hours)
In [200]:courselist.sort(key = lambda x: x.hours[0])
代码:
courselist = [[] for _ in range(5)]
for selected in self.course:
if given_period == selected.period:
course_n += 1
courselist[selected.weekday-1].append(selected)
courselist.sort(key = lambda x: x.hours[0])
感谢大家的回答和建议,我找到了问题所在并彻底解决。:)
解决方案
courselist = [[] for _ in range(5)]
...
courselist.sort(key = lambda x: x.hours[0])
的每个元素courselist
都是一个列表。因此,x
您的 lambda 表达式中的每个都是这些列表之一。Alist
没有属性hours
:这显然是 a 的属性course
。您需要查看这些列表以找到课程。
我们无法修复您的代码,因为您未能包含一个最小的、完整的、可验证的示例。
推荐阅读
- cpu - Qemu Sparc64 仿真 - 键盘不起作用(Windows、Ubuntu 主机测试)
- android - 无法在 Flutter 中使用本地 firebase 模拟器
- python - Python Kivy 日志显示“ModuleNotFoundError: No module named 'aioconsole'” - 如何修复?
- python - 子图以在同一轴上显示两个图形
- android - 带有圆角和可滚动内容的 BottomSheetDialogFragment
- bash - 如何在系统上永远运行 bash 脚本作为后台进程?
- android - 使用 ExoPlayer 进行假修剪/剪切
- wpf - 如何知道 WPF 窗口何时在 Windows 中捕捉/取消捕捉?
- r - 过滤 {quantmod} 系列之前和/或之后的不变价格部分
- javascript - Angular 12.1 使用打字稿添加 html 元素