当前位置: 代码迷 >> python >> 根据另一个列表中单词的出现频率对单词列表进行排序
  详细解决方案

根据另一个列表中单词的出现频率对单词列表进行排序

热度:28   发布时间:2023-06-21 10:52:04.0

我有一个单词列表,我想根据其出现的频率重新排序为另一个字符串列表中的子字符串:

list_to_reorder=['apm', 'mba', 'bac', 'ms', 'grad']
list_with_strings=['don.mba', 'kun.ms', 'bob.mba', 'liz.grad', 'lily.apm', 'tina.mba', 'sash.ms', 'gin.grad', 'moma.bs']

因此,如果我查看list_to_reorder中每个元素的出现次数,则会得到:

mba => 3
ms  => 2
grad=> 2
apm => 1
bs  => 1

然后想像这样对第一个列表重新排序,这是预期的结果:

['mba', 'ms', 'grad', 'apm', 'bac']

谢谢!

使用和

from collections import Counter

>>> d = Counter([x.split('.')[-1] for x in list_with_strings])
>>> sorted(list_to_reorder, key= lambda x: d[x], reverse=True)
['mba', 'ms', 'grad', 'apm', 'bac']

也可以使用作为key ,但我会说它变得不太直观

  相关解决方案