我是python的新手并拥有一个数组,其中每个元素都是一个元组数组。我需要通过元组中的第一个元素对内部数组中的元组进行排序。我的数组看起来像这样:
[[(u'10:30', u'11:20'), (u'08:30', u'09:20')], [(u'14:30', u'15:50'), (u'10:00', u'11:20'), (u'10:30', u'11:20'), (u'13:00', u'14:20')], [(u'10:30', u'11:20'), (u'08:30', u'09:20')], [(u'14:30', u'15:50'), (u'10:00', u'11:20'), (u'13:00', u'14:20')], [(u'10:30', u'11:20'), (u'08:30', u'09:20')]]
我尝试过像
这样的事情for index, elm in array:
array[index] = sorted(elm, key=lambda x: x[0])
但是我得到了ValueError:需要超过0的值才能解压缩。不确定我的语法是否已关闭
预期结果是
[[ (u'08:30', u'09:20'), (u'10:30', u'11:20')], [ (u'10:00', u'11:20'), (u'10:30', u'11:20'), (u'13:00', u'14:20'), (u'14:30', u'15:50')], [(u'08:30', u'09:20'),(u'10:30', u'11:20') ], [ (u'10:00', u'11:20'), (u'13:00', u'14:20'), (u'14:30', u'15:50'),] [ (u'08:30', u'09:20'), (u'10:30', u'11:20')]]
答案 0 :(得分:4)
for
语句缺失enumerate
:
for index, elm in enumerate(array):
但是,如果要对列表进行就地排序,则不需要使用索引。请改用list.sort
:
for elm in array:
elm.sort(key=lambda x: x[0])
答案 1 :(得分:1)
执行for index, elm in array:
时,您将迭代对象对。在第一次循环迭代中,index
为(u'10:30', u'11:20')
而elm
为(u'08:30', u'09:20')
,这不是您想要的(当我输入您的帖子时,我得到TypeError
代码,而不是ValueError
)。您可以使用enumerate()
函数获得您计划的内容:
for index, elm in enumerate(array):
array[index] = sorted(elm, key=lambda x: x[0])