程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python字典排序及字典集合去重高階教程

編輯:Python

學習目標:

字典dict排序:指定按照key排序或values排序。
對字典或者list去除重復元素。


學習內容:

提示:准備

dicta ={
'a':1,'b':2,'d':7,'c':23,'m':21,'f':4}

1、字典dict按key排序,升序或降序
按照字典的key排序:

dicta_sorted = sorted(dicta.items(),key=lambda x :x[0])
print(dicta_sorted)

輸出結果:

[('a', 1), ('b', 2), ('c', 23), ('d', 7), ('f', 4), ('m', 21)]

默認升序,如果要降序,則:

dicta_sorted = sorted(dicta.items(),key=lambda x :x[0],reverse=True)
print(dicta_sorted)

輸出結果:

[('m', 21), ('f', 4), ('d', 7), ('c', 23), ('b', 2), ('a', 1)]

2、 字典dict按values排序,升序或降序
升序

dicta_sorted = sorted(dicta.items(),key=lambda x :x[1])
print(dicta_sorted)

結果:

[('a', 1), ('b', 2), ('f', 4), ('d', 7), ('m', 21), ('c', 23)]

降序:

dicta_sorted = sorted(dicta.items(),key=lambda x :x[1],reverse=True)
print(dicta_sorted)

結果:

[('c', 23), ('m', 21), ('d', 7), ('f', 4), ('b', 2), ('a', 1)]

3、 對字典dict或者list中去重,輸出去重後的個數
不能用for循環一個個去遍歷判斷values是否重復,太消耗時間,充分利用dict查找數據和set去重的特性。

def find_unique_price_using_set(products):
unique_price_set = set()
for _, price in products:
unique_price_set.add(price)
return len(unique_price_set)
products = [
(143121312, 100),
(432314553, 30),
(32421912367, 150),
(937153201, 30)
]
print('number of unique price is: {}'.format(find_unique_price_using_set(products)))
# 輸出 number of unique price is: 3

或者

def find_unique_price_using_set_dict(products):
dist_products=dict(products)
set_price=set(dist_products.values())
return len(set_price)
products = [
(143121312, 100),
(432314553, 30),
(32421912367, 150),
(937153201, 30)
]
import time
# 計算集合_字典版本的時間
start_using_set = time.perf_counter()
find_unique_price_using_set_dict(products)
end_using_set = time.perf_counter()
print("time elapse using set_dict: {}".format(end_using_set - start_using_set))

兩個方法差不多,運行時間都很短,去重效率很高。對一萬個數據去重只用0.0123秒
4、 掌握循環語句


學習時間:

理論10分鐘,時間30分鐘


學習產出:

掌握:
1、字典dict排序,可指定按照key排序,也可以按照values排序。
2、集合set去重操作。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved