Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么实例的属性不能被lambda识别?_Python - Fatal编程技术网

Python 为什么实例的属性不能被lambda识别?

Python 为什么实例的属性不能被lambda识别?,python,Python,我创建了五个列表来存储满足特定条件的实例,并打算按实例属性“小时”对它们进行排序。我可以读取循环外的属性并单独运行这一行,没有错误。但是我运行了这个块,结果显示属性不存在。是什么原因造成的?我怎样才能解决它 File "F:/Aalto study/semester3/programming/Project_studyplan.py", line 143, in print_course courselist.sort(key = lambda x: x.hours[0]) Fi

我创建了五个列表来存储满足特定条件的实例,并打算按实例属性“小时”对它们进行排序。我可以读取循环外的属性并单独运行这一行,没有错误。但是我运行了这个块,结果显示属性不存在。是什么原因造成的?我怎样才能解决它

  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' 
代码:

感谢所有人的回答和建议,我找到了问题所在,并彻底解决了问题。:)

课程列表的每个元素都是一个列表。因此,lambda表达式中的每个
x
都是这些列表之一。
列表
没有属性
hours
:这显然是
课程
的属性。你需要查看这些列表才能找到课程


我们无法修复您的代码,因为您未能包含。

您说过要对
courselist
中的5个子列表进行排序,但您的代码尝试对
courselist
本身进行排序。由于
courselist
中的对象是列表,因此它们没有名为
hours
的属性。想必,您的
选定的
对象会这样做。因此,请分别对每个子列表进行排序:

for day in courselist:
    day.sort(key = lambda x: x.hours[0])

(我无法测试这对于您的代码是否完全正确,因为您没有提供完整的示例。)

在第143行,错误在第143行

courselist.sort(key = lambda x: x.hours[0])

更准确地说,在
x.hours
中。x是一个列表。因为我不知道应该是什么时间,所以我无法修复它。列表是通过索引(非负整数)访问的。

您的
courselist
是一个列表列表,因此lambda中的
x
是这些子列表之一。
courselist
的元素是列表。因此,当您使用
key=lambda x:x.hours[0]
时,
x
是一个列表,而列表没有属性
hours
@John anderson您能看到我的更新吗?奇怪的是,这一行可以单独运行,但不能在块中运行。也许您的意思是
courselist.sort(key=lambda x:x[0].hours)
?我们无法回答这个问题,因为您没有包含实际数据。排序时,
courselist
的内容是什么?如果我们不知道
self
给定的周期
是什么,我们就无法知道这一点。您确定
courselist
中的所有项目都是相同的类型吗?请添加一个
courselist = [[] for _ in range(5)]
...
courselist.sort(key = lambda x: x.hours[0])
for day in courselist:
    day.sort(key = lambda x: x.hours[0])
courselist.sort(key = lambda x: x.hours[0])