可以使用 Python 的 defaultdict 类和 sorted 函数来解决这个问题。以下是代码示例:
from collections import defaultdict
def sort_and_count(lst, order):
counts = defaultdict(int)
for item in lst:
counts[item] += 1
sorted_lst = sorted(lst, key=lambda x: order.index(x))
return sorted_lst, dict(counts)
该函数接受两个参数:一个列表和一个指定顺序的列表(order)。它使用 defaultdict 类来计算每个 item 的出现次数,并使用 sorted 函数来按照 order 列表中元素的顺序对列表进行排序。最后,该函数返回一个元组,其中包含排序后的列表和每个 item 的出现次数。