標籤:相同 好的 設定 itertools new end log app import
#需求:#對列表去重:lis = [2,3,5,3,2,4,8,5,6,7,5](目前為三種方法,持續更新。。。。方法思路來源於https://www.cnblogs.com/nyist-xsk/p/7473236.html,感謝瞭解去重之後解決了一個問題)
lis = [2,3,5,3,2,4,8,5,6,7,5]#方法一:使用set() 集合,這種方法利用set() 集合的去重。出來的結果是進行升序排好的lis1 = list(set(lis))print(lis1) #方法二:使用for迴圈和not in判斷 該方法擷取到的列表跟之前的順序是相同的lis2 = []for i in lis: if i not in lis2: lis2.append(i)print(lis2)#方法三:使用類itertools中groupby() 的方法 該方法需要先進行排序(根據排序的規則最後輸出的結果就是)import itertoolslis = [2,3,5,3,2,4,8,5,6,7,5]lis2 = []lis.sort() #不設定reverse=True 預設是升序,設定是降序,這一步是必須的lis1 = itertools.groupby(lis)for k,v in lis1: lis2.append(k)print(lis2)#[2, 3, 4, 5, 6, 7, 8]升序
#其他方法之後更新
感謝https://www.cnblogs.com/nyist-xsk/p/7473236.html作者提供的思路解決了下面的問題。
#需求:對lis = [2,3,5,3,2,4,8,5,6,7,5]計算元素出現的次數。
lis = [2,3,5,3,2,4,8,5,6,7,5]#去重lis1 = list(set(lis))dic = {}for i in lis1: dic[i] = lis.count(i) #計數print(dic)
#需求如下:給出一個購物車列表,對列表進行計數輸出結果
"""
goods = [{"name": "電腦", "price": 1999},
{"name": "羅技滑鼠", "price": 10},
{"name": "遊艇", "price": 20},
{"name": "美女", "price": 998},
{"name": "羅技滑鼠", "price": 20},
{"name":"電腦","price":1999},
{"name": "電腦", "price": 2999}]
#輸出結果:
new_goods = [{"name":"電腦","price":1999,"count":2},
{"name": "羅技滑鼠", "price": 10, "count": 1},
{"name": "羅技滑鼠", "price": 20, "count": 1},
{"name": "美女", "price": 998,"count":1},
{"name": "遊艇", "price": 20,"count":1},
{"name": "電腦", "price": 2999,"count":1}]
"""
goods = [{"name": "電腦", "price": 1999}, {"name": "羅技滑鼠", "price": 10}, {"name": "遊艇", "price": 20}, {"name": "美女", "price": 998}, {"name": "羅技滑鼠", "price": 20}, {"name":"電腦","price":1999}, {"name": "電腦", "price": 2999}]#先進行去重new_goods = []for good in goods: if good not in new_goods: new_goods.append(good)#進行計數for new_good in new_goods: new_good["count"] = goods.count(new_good)print(new_goods)
python列表的去重