我有一个单词列表,我想根据它作为另一个字符串列表中的子字符串出现的频率重新排序:
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']
谢谢!
答案 0 :(得分:2)
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']
也可以将d.__getitem__
用作key
,但我想它会变得不那么直观