怎么输出元祖出现的次数并从大到小排序?

[('昆明', '厦门'), ('厦门', '南宁'), ('南宁', '昆明'), ('昆明', '深圳'), ('深圳', '昆明'), ('昆明', '重庆'), ('重庆', '金华'), ('金华', '昆明'), ('昆明', '深圳'), ('深圳', '昆明'), ('昆明', '重庆'), ('重庆', '昆明'), ('昆明', '咸阳'), ('咸阳', '昆明'), ('昆明', '深圳'), ('深圳', '昆明'), ('昆明', '厦门')]
比如输出结果为这个,怎么统计每个出现的次数并按从大到小排列啊

可以借助collections模块的Counter

from collections import Counter

c = Counter([('昆明', '厦门'), ('厦门', '南宁'), ('南宁', '昆明'), ('昆明', '深圳'), ('深圳', '昆明'), ('昆明', '重庆'), ('重庆', '金华'), ('金华', '昆明'), ('昆明', '深圳'), ('深圳', '昆明'), ('昆明', '重庆'), ('重庆', '昆明'), ('昆明', '咸阳'), ('咸阳', '昆明'), ('昆明', '深圳'), ('深圳', '昆明'), ('昆明', '厦门')])

print(c)

# Counter({('昆明', '深圳'): 3, ('深圳', '昆明'): 3, ('昆明', ' 厦门'): 2, ('昆明', '重庆'): 2, ('厦门', '南宁'): 1, ('南宁', '昆明'): 1, ('重庆', '金华'): 1, ('金华', '昆明'): 1, ('重庆', '昆明'): 1, ('昆明', '咸阳'): 1, ('咸阳', '昆明'): 1})

for k, v in c.most_common(len(c)): print(k, v)

'''
('昆明', '深圳') 3
('深圳', '昆明') 3
('昆明', '厦门') 2
('昆明', '重庆') 2
('厦门', '南宁') 1
('南宁', '昆明') 1
('重庆', '金华') 1
('金华', '昆明') 1
('重庆', '昆明') 1
('昆明', '咸阳') 1
('咸阳', '昆明') 1
'''