字典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去重操作。