最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)嵌套列表去重方法示例

 更新時間:2017年12月28日 10:52:19   作者:_Apache  
人生苦短,早用Python。python可以說2017比較火的一個語言了,下面這篇文章主要給大家介紹了關于利用Python實現(xiàn)嵌套列表去重的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。

發(fā)現(xiàn)問題

python嵌套列表大家應該都不陌生,但最近遇到了一個問題,這是工作中遇到的一個坑,首先看一下問題

raw_list = [["百度", "CPY"], ["京東", "CPY"], ["黃軒", "PN"], ["百度", "CPY"]]

列表嵌套了列表,并且有一個重復列表["百度", "CPY"],現(xiàn)在要求將這個重復元素進行去重(重復是指嵌套的列表內兩個元素都相同),并且保證元素順序不變,輸出還是嵌套列表,即最后結果應該長這樣:[["百度", "CPY"], ["京東", "CPY"], ["黃軒", "PN"]]

正常Python去重都是使用set,所以我這邊也是用這種思想處理一下

In [8]: new_list = [list(t) for t in set(tuple(_) for _ in raw_list)]
In [9]: new_list
Out[9]: [['京東', 'CPY'], ['百度', 'CPY'], ['黃軒', 'PN']]

=。=以為大功告成,結果發(fā)現(xiàn)嵌套列表順序變了

好吧一步步找一下是從哪邊順序變了的

In [10]: s = set(tuple(_) for _ in raw_list)
In [11]: s
Out[11]: {('京東', 'CPY'), ('百度', 'CPY'), ('黃軒', 'PN')}

恍然大悟關于set的兩個關鍵詞:無序 和 不重復 =。=

所以從set解決排序問題基本無望了,然而我還沒有放棄,現(xiàn)在問題就變成了對于new_list怎么按照raw_list元素順序排序,當然肯定要通過sort實現(xiàn)

翻一下Python文檔找到以下一段話

文檔地址

sort(*, key=None, reverse=False)

This method sorts the list in place, using only < comparisons between 
items. Exceptions are not suppressed - if any comparison operations  
fail, the entire sort operation will fail (and the list will likely be left in a 
 partially modified state).

 [`sort()`](https://docs.python.org/3/library/stdtypes.html?highlight=sort#list.sort "list.sort") 

accepts two arguments that can only be passed by keyword ( [keyword-only arguments](https://docs.python.org/3/glossary.html#keyword-only-parameter) ):

key specifies a function of one argument that is used to extract a 
comparison key from each list element (for example, key=str.lower). 
 The key corresponding to each item in the list is calculated once and  then used for the entire sorting process. The default value of None 
means that list items are sorted directly without calculating a separate
 key value.

開始劃重點:

sort方法通過參數key指定一個方法,換句話說,key參數的值是函數。

這個函數和new_list上的每個元素會產生一個結果,sort通過這個結果進行排序。

于是這里就想到求出new_list里的每一個元素在raw_list里的索引,根據這個索引進行排序。

代碼實現(xiàn)如下:

In [13]: new_list.sort(key=raw_list.index)
In [14]: new_list
Out[14]: [['百度', 'CPY'], ['京東', 'CPY'], ['黃軒', 'PN']]

結果和期望一樣 =。=

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

最新評論

方正县| 拜泉县| 屏南县| 杨浦区| 黎城县| 邵阳市| 台中市| 吉林市| 汶川县| 通城县| 大理市| 弋阳县| 中西区| 孝昌县| 安宁市| 迭部县| 莲花县| 荣成市| 东宁县| 砀山县| 信丰县| 金溪县| 铁岭市| 牙克石市| 辰溪县| 南郑县| 利津县| 大宁县| 堆龙德庆县| 黔南| 雅安市| 芮城县| 桐城市| 本溪市| 揭阳市| 密山市| 阜新| 新营市| 通辽市| 阿克苏市| 民乐县|