[(u'we', 'PRP'), (u'saw', 'VBD'), (u'you', 'PRP'), (u'bruh', 'VBP'), (u'.', '.')]
我想通过“PRP,VBD,PRP和VBP”按字母顺序排序 这不是传统的那种,对吧?
答案 0 :(得分: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')]
答案 1 :(得分:7)
sort
method使用key
参数从每个参数中提取比较键,即key
是一个将列表项转换为您希望排序的值的函数。 / p>
在这种情况下,use a lambda
很容易从每个元组中提取第二个项目:
>>> 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')]
答案 2 :(得分:1)
您可以在sort
方法中传递比较函数。
示例:
l = [(u'we', 'PRP'), (u'saw', 'VBD'), (u'you', 'PRP'), (u'bruh', 'VBP'), (u'.', '.')]
l.sort(lambda x, y: cmp(x[1], y[1])) # compare tuple's 2nd elements
输出:
>>> l
[(u'.', '.'),
(u'we', 'PRP'),
(u'you', 'PRP'),
(u'saw', 'VBD'),
(u'bruh', 'VBP')]
>>>
答案 3 :(得分:0)
或者使用内置函数排序(类似于Nick_D的答案):
ls = [(u'we', 'PRP'), (u'saw', 'VBD'), (u'you', 'PRP'), (u'bruh', 'VBP'), (u'.', '.')]
sorted(ls, cmp=lambda t1, t2: cmp(t1[1], t2[1]))