当前位置: 首页 > 面试题库 >

元组的元组排序列表

史高阳
2023-03-14
问题内容
[((D,A),0.0),((D,C),0.0),((D,E),0.5)]

我需要将列表排序为:

[((D,E),0.5),((D,A),0.0),((D,C),0.0)]

我已经使用了该sorted()函数,并且能够根据值进行排序0.5, 0.0…但是我无法按字母顺序进行排序,因为我需要按照数字的降序和字母的升序对列表进行排序数字具有相同的值。


问题答案:

使用元组作为浮点数为负的排序键可以反转顺序:

>>> li=[(('D','A'),0.0),(('D','C'),0.0),(('D','E'),0.5)]
>>> sorted(li, key=lambda t: (-t[-1],t[0]))
[(('D', 'E'), 0.5), (('D', 'A'), 0.0), (('D', 'C'), 0.0)]

如果您不能进行求反(例如对字符串或字母值或非数字值),则可以利用Python sort函数稳定的事实,并分两步进行排序:

>>> li=[(('D','A'),'A'),(('D','C'),'A'),(('D','E'),'C')]
>>> sorted(sorted(li), key=lambda t: t[-1], reverse=True)
[(('D', 'E'), 'C'), (('D', 'A'), 'A'), (('D', 'C'), 'A')]


 类似资料:
  • 问题内容: 我有以下元组,其中包含元组: 我想根据内部元组中包含的 第二个 值对该元组进行排序(即对Apple,Carrot,Banana而不是A,B,C进行排序)。 有什么想法吗? 问题答案: 是否:

  • 我有下面的代码- 是包含int属性的类对象列表-参考号:即

  • 我做了一个代码,应该显示数组中元素排列的整个组合。 应该是什么: 123 213 231 132 312 321 但结果是这样的: 231 312 123 231 312 123 如何以应有的方式进行排列?

  • 我必须将元组与元组列表进行比较,如果整数小于列表中的任何元组,则返回True。例如,如果我有将返回True,因为单独元组(“番茄”,10,5)中的整数比列表中的元组(“橙色”,11,6)小,但是如果我有将返回False。 我试试这个 但不工作时,它应该返回假,我不知道为什么? 注意:字符串对于这个问题并不重要,我必须忽略它。

  • 问题内容: 对此问题的任何帮助将不胜感激。 我有一个元组列表 并且我需要删除某种类型的重复项:根据我的定义,(1,2)和(2,1)被视为重复项。所需输出 提前致谢 问题答案: 您可以对它们进行排序,然后使用删除重复项:

  • 问题内容: 从经验上讲,似乎Python的默认列表排序器在传递元组列表时将按每个元组中的第一个元素进行排序。那是对的吗?如果不是,按元组的第一个元素对元组列表进行排序的正确方法是什么? 问题答案: 它会自动按元组中的第一个元素对元组列表进行排序,然后按第二个元素进行排序,依此类推,tuple([1,2,3])将排在tuple([1,2,4])之前。如果要覆盖此行为,请将一个callable作为第二