python - 如何对包含列表的元组进行排序?
问题描述
我正在尝试构建基于内容的推荐系统。
我创建了这个对象,它是一个包含字符串和元组列表的元组。列表中的每个元组都是一个分数值和项目 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')])
解决方案
您可以对列表进行排序并完成。
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')])
您不需要任何额外的努力来按每个元组的第一个元素进行排序,因为无论如何元组都是按字典顺序排序的。如果一对元组的第一个元素相同,则该算法仅查看第二个元素。
推荐阅读
- mongodb - 从 mongo 集合中的数组中删除一个条目
- node.js - Telegraf.js:使用按钮离开 WizardScene
- react-router - 如何在 React Router v5 中更新 URL 并替换历史状态而不重新渲染整个应用程序?
- android - 更新材料库后如何修复“包裹:解组时找不到类:androidx.fragment.app.FragmentManagerState”?
- python - 使用列表在 Python 中进行猴子修补
- c++ - 计算表示为字符串的大数的模
- python - 列表理解中的嵌套列表到 for 循环
- c# - 如何计算范围 [a, b] 中的闰年而不在 C# 上使用循环
- html - 如何将 div 文本翻转回正常?
- c# - 使用异步函数获取 Json 的自定义对象