Python 还有比排序元组更优雅的解决方案吗?

Python 还有比排序元组更优雅的解决方案吗?,python,sorting,tuples,Python,Sorting,Tuples,我正在研究一个关于元组的有点噱头的问题,最终解决了它。。。但我觉得我的代码真的很难看。有没有比这更简单的方法?基本上,这个问题给出了一个元组,您需要对元组进行排序,从同一元组中删除数字,然后创建这样的输出 输出=[这句话,现在应该有意义了] 一开始,你有 t=[(4,'make'),(1,'sentence'),(0,'this'),(3,'now'),(5,'sense'),(2,'should')] 我的解决方案 t=[(4,'make'),(1,'sentence'),(0,'this

我正在研究一个关于元组的有点噱头的问题,最终解决了它。。。但我觉得我的代码真的很难看。有没有比这更简单的方法?基本上,这个问题给出了一个元组,您需要对元组进行排序,从同一元组中删除数字,然后创建这样的输出

输出=[这句话,现在应该有意义了]

一开始,你有

t=[(4,'make'),(1,'sentence'),(0,'this'),(3,'now'),(5,'sense'),(2,'should')] 
我的解决方案

t=[(4,'make'),(1,'sentence'),(0,'this'),(3,'now'),(5,'sense'),(2,'should')] 

def makeList(t):
    result = ''
    t.sort()
    for x, y in t:
        result += y +', '
    result = result[:-2]    
    result = ('[' + ', '.join([result]) + ']')
    return result 

OUTPUT: [this, sentence, should, now, make, sense] 
这很简单:

sentence = [(4,'make'),(1,'sentence'),(0,'this'),(3,'now'),(5,'sense'),(2,'should')]
print "[%s]" % ', '.join(word for _,word in sorted(sentence))
这里有几点需要注意:

A用作连接的参数。语法与for相同 我们迭代元组的排序列表,并使用u表示我们不需要元组的第一个值(数字),而只需要单词的第二部分 A用于构建最后一个字符串,其周围有[]。我们也可以在这里使用,但我认为在这个例子中这样看起来更干净 正确答案的替代方案:

>>> sentence = [(4,'make'),(1,'sentence'),(0,'this'),\
... (3,'now'),(5,'sense'),(2,'should')]
>>> [w for t,w in sorted(sentence)]
['this', 'sentence', 'should', 'now', 'make', 'sense']

如果您确实想要一个列表而不是一个看起来像列表的字符串…

+1。解释:元组的默认排序顺序是。@larsmans:我想他已经理解了,因为他在原始代码中使用了这个特性,too@user1142285:别这样。这里涉及的构造需要一些习惯来有效地应用它们。我添加了一个小的解释,以防你想知道它是如何工作的。此外,如果您愿意,也可以接受此答案:@user1142285:您是否考虑过通过单击勾选按钮接受此答案?您知道某些_字符串.join[single_element]等同于single_element?