Python在python中对2D元组数组进行排序

时间:2016-01-07 06:31:48

标签: python arrays list sorting tuples

我是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')]]

2 个答案:

答案 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])