Python中有什么方法可以按频率对列表进行排序?
例如,
[1,2,3,4,3,3,3,6,7,1,1,9,3,2]
上面的列表将按照其值的频率顺序进行排序,以创建以下列表,其中频率最高的项目位于最前面:
[3,3,3,3,3,1,1,1,2,2,4,6,7,9]
我认为这对于A来说将是一项好工作collections.Counter
:
counts = collections.Counter(lst)
new_list = sorted(lst, key=lambda x: -counts[x])
或者,您可以写第二行而不使用lambda:
counts = collections.Counter(lst)
new_list = sorted(lst, key=counts.get, reverse=True)
如果您有多个具有相同频率的元素 并且 您希望这些元素保持分组状态,那么我们可以通过更改排序键以不仅包括计数,还包括 值 来做到这一点:
counts = collections.Counter(lst)
new_list = sorted(lst, key=lambda x: (counts[x], x), reverse=True)
问题内容: 我有一个数字列表:(这是现有记录的ID) 我有一个带有列和的mysql表,其中是整数主键。我想从该表中选择的记录,但在一个特定的顺序,例如,,,,,。 是否可以在MyISAM的查询中执行此操作,而无需任何后处理? 最简单的方法是什么? 问题答案: 由于,一个简单就足够了。 但是,如果您要这样订购:,则可以使用function : 如果查询匹配的行多于您列出的行 返回时,行不匹配任何您列
我用的是拉威尔的背包,积垢舱。 如何将orderby()用于多列? 例子: 我看到src和orderby只接受一个参数。 有什么建议吗?
问题内容: 如何按降序对列表进行排序? 问题答案: 在一行中,使用: 将函数传递给:
问题内容: 我有以下查询,该查询基于逗号分隔的列表返回行 我希望此查询的结果以ID在列表中的顺序返回。SQL可以做到吗? 提前致谢 问题答案: 如果您需要输出以特定顺序显示,则需要使用服务器可以排序的内容来指定该顺序。不知道您要使用哪个引擎,一般的方案是创建一个临时表或使用行集构造函数将每个记录ID与所需的排序顺序配对。 例如(SQL Server)
问题内容: 如何在如下所示的SQLAlchemy查询中使用ORDER BY ? 此查询有效,但以升序返回: 如果我尝试: 然后我得到:。 问题答案: 来自@ jpmc26的用法
问题内容: 我有一个像下面的表格 我需要先获得特色产品,然后再选择优先级为p1,p2和p3的产品 我写了一个查询,在下面是行不通的。 你能在那发现错误吗 问题答案: 试试这个 如果您在mysql枚举上使用ORDER BY,则不会按字母顺序对其进行排序,而是会按其在枚举中的位置对其进行排序。 如果要按照描述的字母顺序排序,请将枚举名称转换为这样的字符串