2017-01-31 56 views
0

我有这样一段代码Python:如何对元组的第二项进行排序?

relations = dict() 
relations[('a','b','c')] = 'first' 
relations[('a','c','c')] = 'third' 
relations[('d','b','c')] = 'second' 

relations_sorted = sorted(relations.keys(), key=lambda tup: tup[1]) 

for key in relations_sorted: 
    print(key, relations[key]) 

这将打印排序的关键元组(溶液在计算器上找到)的第二元件上的字典。

(('d', 'b', 'c'), 'second') 
(('a', 'b', 'c'), 'first') 
(('a', 'c', 'c'), 'third') 

如何将此扩展为对元组中的第二个,第一个和第三个元素的组合进行排序?例如。

(('a', 'b', 'c'), 'first') 
(('d', 'b', 'c'), 'second') 
(('a', 'c', 'c'), 'third') 

回答

4

只需使用key=lambda tup: (tup[1], tup[0], tup[2])

甚至更​​快/更容易/与operator.itemgetter更好:

from operator import itemgetter 

relations_sorted = sorted(relations.keys(), key=itemgetter(1, 0, 2)) 
1

更改为key=lambda tup: (tup[1], tup[0], tup[2])

相关问题