学习目标:
字典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去重操作。