列表ls中存儲了我國不少所高校所對應的學校類型,請以這個列表爲數據變量,完善Python代碼,統計輸出各種型的數量python
ls = ["綜合", "理工", "師範", "農林", "軍事", "綜合", "綜合", "綜合", "理工", "理工", "軍事", "師範", "師範", "綜合"]
方法1 :利用collections的子類Counter從大到小排序ide
ls = ["綜合", "理工", "師範", "農林", "軍事", "綜合", "綜合", "綜合", "理工", "理工", "軍事", "師範", "師範", "綜合"] from collections import defaultdict from collections import Counter ls_dict = defaultdict(lambda : 0) for item in ls: key = item ls_dict[key] += 1 print(ls_dict) # 結果:defaultdict(<function <lambda> at 0x00000000010BE048>, {'師範': 3, '農林': 1, '軍事': 2, '理工': 3, '綜合': 5}) print(Counter(ls_dict).most_common()) # 結果:[('綜合', 5), ('師範', 3), ('理工', 3), ('軍事', 2), ('農林', 1)]
方法2:函數
利用zip + sorted函數, sorted能夠對列表進行從小到大排序,對於字典,sorted默認只按照dict的key進行排序,因此要對dict進行調整變形;spa
利用zip函數把dict轉換成一個列表,列表中每一個元素都是一個元組,元組大小比較原理是,先比較第一個元素,相同的話在比較第二個;排序
利用sorted函數對轉換後的列表進行排序;ip
ls = ["綜合", "理工", "師範", "農林", "軍事", "綜合", "綜合", "綜合", "理工", "理工", "軍事", "師範", "師範", "綜合"] d = {} for word in ls: d[word] = d.get(word, 0) + 1 print(d) # 結果: {'理工': 3, '綜合': 5, '師範': 3, '農林': 1, '軍事': 2} z = zip(d.values(), d.keys()) print(sorted(z)) # 結果: [(1, '農林'), (2, '軍事'), (3, '師範'), (3, '理工'), (5, '綜合')]
方法3 : get
利用sorted + lambdait
sorted(d.items(), key=lambda x: x[1]) io
第一個參數是須要排序的列表,第二個參數是指定key(列表中的每一項的第幾個元素)來進行排序。function
首先d.items() 返回一個列表dict_items([('綜合', 5), ('師範', 3), ('農林', 1), ('理工', 3), ('軍事', 2)])
sorted會對這個列表進行遍歷,把list中的每個元素,也就是每一個元組當作x傳入匿名函數lambda x: x[1],函數返回值爲x[1]
d = {} for word in ls: d[word] = d.get(word, 0) + 1 print(d) d = sorted(d.items(), key=lambda x: x[1]) print(d) # 結果: [('農林', 1), ('軍事', 2), ('師範', 3), ('理工', 3), ('綜合', 5)]