如何在Python中订购此列表?

TIM*_*MEX 1 python sorting list

[(u'we', 'PRP'), (u'saw', 'VBD'), (u'you', 'PRP'), (u'bruh', 'VBP'), (u'.', '.')]
Run Code Online (Sandbox Code Playgroud)

我想按字母顺序排序,"PRP,VBD,PRP和VBP"这不是传统的排序,对吧?

小智 15

使用itemgetter:

>>> a = [(u'we', 'PRP'), (u'saw', 'VBD'), (u'you', 'PRP'), (u'bruh', 'VBP'), (u'.', '.')]
>>> import operator
>>> a.sort(key = operator.itemgetter(1))
>>> a
[(u'.', '.'), (u'we', 'PRP'), (u'you', 'PRP'), (u'saw', 'VBD'), (u'bruh', 'VBP')]
Run Code Online (Sandbox Code Playgroud)

  • +1使用`itemgetter`,不知道它存在:) (3认同)

Dav*_*ebb 7

sort方法接受一个key参数从每个参数中提取一个比较键,即key是一个将列表项转换为您希望排序的值的函数.

在这种情况下,使用alambda从每个元组中提取第二个项目非常容易:

>>> mylist = [(u'we', 'PRP'), (u'saw', 'VBD'), (u'you', 'PRP'), (u'bruh', 'VBP')
, (u'.', '.')]
>>> mylist.sort(key = lambda x: x[1])
>>> mylist
[(u'.', '.'), (u'we', 'PRP'), (u'you', 'PRP'), (u'saw', 'VBD'), (u'bruh', 'VBP')]
Run Code Online (Sandbox Code Playgroud)