【问题标题】:Sort nested tuple in Ascending Order按升序对嵌套元组进行排序
【发布时间】:2017-03-11 20:00:01
【问题描述】:

我有一个类似的嵌套元组:

cluster = [(0,0), (0,2), (0,1), (2,1), (1,2), (2,0), (1,0), (0,1)]

我正在尝试按升序对值进行排序。不是按第一个元素或第二个元素,而是按升序排列。 结果应该是

sorted_cluster = [(0, 0), (0, 2), (0, 1), (1, 2), (1, 2), (0, 2), (0, 1), (0, 1)]

在线查看,解决方案通常是按第一个或第二个元素排序,但在这种情况下,我希望按升序排序。我能够做到:

for i in range(len(cluster)):
    sorted_cluster.append(sorted(cluster[i])

但是,这样做时,我在嵌套列表中返回了一个嵌套列表,这不是我想要的。当我使用Counter 时,它会识别“不可散列列表”。

【问题讨论】:

    标签: python python-2.7 sorting tuples


    【解决方案1】:

    sorted 总是返回一个列表,所以只要把它转换成一个元组。如果您只是要使用索引来访问列表中的元素,请不要遍历集群的索引,迭代元素本身 Pythonic 方式:

    for c in cluster:
        sorted_cluster.append(tuple(sorted(c)))
    

    【讨论】:

    • 谢谢。迭代元素可以节省大量时间。
    【解决方案2】:

    以下应该可以工作

    cluster = [(0,0), (0,2), (0,1), (2,1), (1,2), (2,0), (1,0), (0,1)]
    sorted_cluster = []
    for i in range(len(cluster)):
        sorted_cluster.append(tuple(sorted(cluster[i])))
    

    tuple 将解决您的问题,因为它将列表转换为您正在寻找的元组。

    【讨论】:

    • 谢谢。解决方案是将其转换为元组。我投了另一个答案,因为它更快。
    猜你喜欢
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    相关资源
    最近更新 更多