首页 > 解决方案 > 如何对包含列表的元组进行排序?

问题描述

我正在尝试构建基于内容的推荐系统。

我创建了这个对象,它是一个包含字符串和元组列表的元组。列表中的每个元组都是一个分数值和项目 ID。

我不知道如何按分值排序这个对象

    ('100460040',
 [(0.424943345091376, '100460139'),
  (0.5341613659423828, '100462023'),
  (0.2915704982169979, '100464122'),
  (0.6915704982169979, '100461026')])

这是我想要得到的结果

        ('100460040',
 [(0.6915704982169979, '100461026'),
  (0.5341613659423828, '100462023'),
  (0.424943345091376, '100460139'),
  (0.2915704982169979, '100464122')])

标签: pythontuples

解决方案


您可以对列表进行排序并完成。

In [1]: t = ('100460040',
   ...:  [(0.424943345091376, '100460139'),
   ...:   (0.5341613659423828, '100462023'),
   ...:   (0.2915704982169979, '100464122'),
   ...:   (0.6915704982169979, '100461026')])
   ...:   
In [2]: t[1].sort(reverse=True)
In [3]: 
In [3]: t
Out[3]: 
('100460040',
 [(0.6915704982169979, '100461026'),
  (0.5341613659423828, '100462023'),
  (0.424943345091376, '100460139'),
  (0.2915704982169979, '100464122')])

您不需要任何额外的努力来按每个元组的第一个元素进行排序,因为无论如何元组都是按字典顺序排序的。如果一对元组的第一个元素相同,则该算法仅查看第二个元素。


推荐阅读