list去重python
㈠ python中列表如何去重
可以利用set去重
代碼如下:
#coding=utf-8
li=[1,2,3,4,2,1,3,0]#列表
li2=set(li)
print(li2)
㈡ Python實現對列表中重復元素進行去重的方法小結
1、運用新建字典的方式,去除重復的鍵
2、利用集合,直接將列表轉化為集合,自動去重後轉回列表。有一個問題,轉換為集合的同時,數據無序了。
3、用列表的推導式
㈢ python,list如何去重
通過set來去重
>>>l=[1,2,3,4,5,2,1,3,45,3,21,12,4]
>>>set(l)
set([1,2,3,4,5,12,45,21])
>>>printlist(set(l))
[1,2,3,4,5,12,45,21]
>>>
㈣ python list 去重復
import
a = [{'a':12,'b':21},{'a':13,'b':22},{'a':14,'b':22},{'a':15,'b':23},{'a':16,'b':22}]
d = {}
for i in a:
d.setdefault(i['b'], 0)
d[i['b']] += 1
at = .(a)
for i in at:
if d[i['b']] > 1:
a.remove(i)
print a
先把b值統計一下。然後再一個比對,如果統計個數大於1,就從列表中移出。
㈤ python 列表多個元素如何配對去重呢
每次從列表中取出兩個元素,如果第二個元素不在輸出列表,就將這兩個元素添加到輸出列表。
source = ["a","1","b","1","c","2","d","3","e","4","c","3"]
out = []
for e in zip(source[0::2],source[1::2]):
....if e[1] not in out:
........out = out + list(e)
print(out)
㈥ python中對list去重的多種方法
python中對list去重的多種方法
今天遇到一個問題,在同事隨意的提示下,用了 itertools.groupby 這個函數。不過這個東西最終還是沒用上。
問題就是對一個list中的新聞id進行去重,去重之後要保證順序不變。
直觀方法
最簡單的思路就是:
這樣也可行,但是看起來不夠爽。
用set
另外一個解決方案就是用set:
代碼如下:
ids = [1,4,3,3,4,2,3,4,5,6,1]
ids = list(set(ids))
這樣的結果是沒有保持原來的順序。
按照索引再次排序
最後通過這種方式解決:
代碼如下:
ids = [1,4,3,3,4,2,3,4,5,6,1]
news_ids = list(set(ids))
news_ids.sort(ids.index)
使用itertools.grouby
文章一開始就提到itertools.grouby, 如果不考慮列表順序的話可用這個:
代碼如下:
ids = [1,4,3,3,4,2,3,4,5,6,1]
ids.sort()
it = itertools.groupby(ids)
for k, g in it:
print k
關於itertools.groupby的原理可以看這里:http://docs.python.org/2/library/itertools.html#itertools.groupby
網友補充:用rece
網友reatlk留言給了另外的解決方案。我補充並解釋到這里:
代碼如下:
In [5]: ids = [1,4,3,3,4,2,3,4,5,6,1]
In [6]: func = lambda x,y:x if y in x else x + [y]
In [7]: rece(func, [[], ] + ids)
Out[7]: [1, 4, 3, 2, 5, 6]
上面是我在ipython中運行的代碼,其中的 lambda x,y:x if y in x else x + [y] 等價於 lambda x,y: y in x and x or x+[y] 。
㈦ python中刪除列表中的重復內容
題主你好,
可以通過"集合"過渡一下, 來實現列表的去重, 即整個過程是:
原始列表-->集合-->再轉回列表
分解來看:
=====
希望可以幫到題主, 歡迎追問.
㈧ python如何列表去重取最大值
list=[('小王','第一次考試','5'),('小陳','第二次考試','7'),('小陳','第一次考試','1'),('小王','第六次考試','20')]
dic={}
list1=[]
forpersoninlist:
ifperson[0]notindic.keys():
dic[person[0]]=person
elifint(dic[person[0]][2])<int(person[2]):
dic[person[0]]=person
forvalueindic.values():
list1.append(value)
print(list1)
*.你看到的代碼應該是沒有縮進了,你可以右鍵>檢查,從相應的源碼中能看到相關的縮進
---------
稍等我給你寫下思路:
總體的思路就是動態的改變字典dic,字典中的鍵是tuple的第1個元素,即人名,相應的鍵值就是整個tuple,如dic={'小王':('小王','第一次考試','5')};而a.這個字典中的鍵值對是不斷增加的,b.鍵值是不斷改變的.這里的a,b兩點要怎麼理解呢?
先說a.這個字典中的鍵值對是不斷增加的?
比如說我一開始的字典是空的,然後我遍歷字典的時候,我會拿每次取到的列表中的元素(即元素)的第1個元素作為鍵,去dic中找,看看當前dic中是否有這個鍵,如果沒有,則我會在dic中新增一個鍵值對,這個鍵值對的鍵即tuple的第1個元素,相應的鍵值為整個tuple,舉例:
當前dic為{'小王':('小王','第一次考試','5')},假如我遍歷到list中的第2個元素,即('小陳','第二次考試','7'),我會取這個tuple的第1個元素,即'小陳',看看dic字典的鍵中是否有'小陳',結果一看dic中只有一個鍵'小王',沒有'小陳',則我會在dic中新增一個鍵值對,最後得到新的dic:{'小王':('小王','第一次考試','5'),'小陳':('小陳','第二次考試','7')}.
再一看b點:鍵值是不斷變化的:
接上面說,此時字典dic的值為{'小王':('小王','第一次考試','5'),'小陳':('小陳','第二次考試','7')},然後列表我遍歷到了第3個元素,即('小陳','第一次考試','1')。此時前面的處理邏輯還是一樣的,取tuple中的第1個元素去dic的鍵中找,看看是否存在,一找存在,字典dic中有'小陳'這個鍵了,則繼續第2步,用dic中'小陳'鍵值tuple中的第3個元素和當前從列表中取的第1個元素為'小陳'的tuple的第3個元素相比較,如果字典中的那個大,則字典中'小陳'的鍵值不變,如果從列表中拿到的這個tuple中第3個值大,則將字典中'小陳'的鍵值整個替換為從列表中取的這個當前tuple.
最終我們得到了一個鍵唯一,且相應鍵值為首個元素相同tuples中第3個值最大的這么一個字典。
因為你要求最終得到的類型是字典,所以接下來就是如果將這個字典dic轉化為你要的字典,dic.alues()得到的是dic中所有值的這么一個迭代器,然後使用for循環遍歷這個迭代器,把每次迭代器中取的值都追加到列表list1中。
最終列印的list1,符合題目要求
㈨ Python數字列表去重,如何簡單的既去重還能按原來的順序輸出
Python數字列表去重,還能按原來的順序輸出.
第一種方法
alist = [1, 2, 2, 4, 4, 6, 7]
b = []
for i in alist:
if i not in b:
b.append(i)
print(b)
源代碼(注意源代碼的縮進)
㈩ python中如何刪除列表中重復的元素
舉個例子,比如有這樣一個列表l,可表示為[1,2,2,5,3,6],它可以通過下面的操作達到去重的目的:l=list(set(l)),在python shell中代碼執行如下圖所示:
python列表去重操作代碼運行結果