Ⅰ 求助一個python問題,用字典與集合的知識解下面這個題,感謝大佬幫忙🙏
course1 = set(('李雷', '張玉', '王曉剛', '陳紅靜', '方向', '司馬清'))
course2 = set(('施然', '李芳芳', '劉瀟', '方向', '孫一航', '黃煌'))
course3 = set(('陳紅靜', '方向', '劉培良', '張玉', '施小冉', '司馬清'))
d={}
data=[x for y in [course1,course2,course3]
for x in y]for x in data:
if x in d:
d[x]+=1
else:
d[x]=1
print(d,' ')
print('這個班還有 %d 學生沒有選課(by set)' % (25-len(course1|course2|course3)))
print('這個班還有 %d 學生沒有選課(by dict)' % (25-len(d)))
print('有 %d 位學生同時選修了2門課' % list(d.values()).count(2))
print('有 %d 位學生同時選修了3門課' % list(d.values()).count(3))
print('有 %d 位學生同時選修了1門課' % list(d.values()).count(1))
Ⅱ python爬取的數據如何去重說一下具體的演算法依據
要具體問題具體分析的。看你要抓取什麼數據。
最好能找到一個能夠作為重復性區分的欄位值。比如網路知道的所有提問,每個問題都有一個對應的id,樓主這個問題對應的id就是181730605611341844。那在爬取的過程中,可以將所有已經爬取的問題id保存在一個set()中,如果即將爬取的問題id已經存在了,那就跳過,反之則繼續。
不知道樓主用的是什麼資料庫,在資料庫設計中,也可以添加一些約束條件作為約束,保證數據的唯一性。
Ⅲ Python 去除列表中重復的元素
這個有幾種方法來完成,但是對於不可哈希的數據來說,BIF set() 是無效的,會報錯,下面介紹幾種方法
對於以上4種方法,各有利弊,一般來說是方法2最快,方法1和方法3比較類似,但是方法3可以保持列表中的排序和之前的一樣,但是開頭也說了,這樣無法對不可哈希的對象進行去重復,比如列表中的元素還是列表,這種情況下就只能用方法4了,但是方法4的缺點就是比較的慢。
Ⅳ python刪除list重復元素
在Python中主要有5種方式 。
1、使用set函數
set是定義集合的,無序,非重復
numList = [1,1,2,3,4,5,4]
print(list(set(numList)))
#[1, 2, 3, 4, 5]
2、先把list重新排序,然後從list的最後開始掃描
a = [1, 2, 4, 2, 4, 5,]
a.sort()
last = a[-1]
for i in range(len(a) - 2, -1, -1):
if last == a[i]:
del a[i]
else:
last = a[i]
print(a) #[1, 2, 4, 5]
3、使用字典函數
a=[1,2,4,2,4,]
b={}
b=b.fromkeys(a)
c=list(b.keys())
print(c) #[1, 2, 4]
4、append方式
def delList(L):
L1 = []
for i in L:
if i not in L1:
L1.append(i)
return L1
print(delList([1, 2, 2, 3, 3, 4, 5])) #[1, 2, 3, 4, 5]
5、count + remove方式
def delList(L):
for i in L:
if L.count(i) != 1:
for x in range((L.count(i) - 1)):
L.remove(i)
return L
print(delList([1, 2, 2, 3, 3, 4]))#[1, 2, 3, 4]