问题描述
我有一个单词列表,我想根据其出现的频率重新排序为另一个字符串列表中的子字符串:
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']
谢谢!
1楼
使用和
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
,但我会说它变得不太直观