排序字典value


 1 from random import randint 
 2 
 3 # 随机生成10个[0,100]的整数
 4 data = [randint(0,100) for i in range(10)]
 5 print(data)
 6 # [74, 23, 25, 62, 46, 98, 14, 80, 41, 1]
 7 
 8 # 过滤出大于等于10的元素
 9 r = filter(lambda x: x >= 10 , data)
10 print(r)
11 #<filter object at 0x000000000277D4A8>
12 print(type(r))
13 #<class 'filter'>
14 # 将filter类型转换为list类型
15 print(list(r))
16 #[74, 23, 25, 62, 46, 98, 14, 80, 41]
17 
18 # 过滤出大于等于10的元素
19 # 比较上个方法而言,该方法效率更高,不需要进行类型转换
20 r = [i for i in data if i >= 10]
21 print(r)
22 #[74, 23, 25, 62, 46, 98, 14, 80, 41]


1 # 随机生成[1,9]:[0,100]的字典
2 r = {x : randint(0,100) for x in range(1, 10)}
3 print(r)
4 #{1: 60, 2: 33, 3: 27, 4: 30, 5: 7, 6: 5, 7: 99, 8: 34, 9: 45}
5 # 筛选出字典中值大于90的元素
6 r = {k:v for k,v in r.items() if v > 90}
7 print(r)
8 #{7: 99}


 1 # 将字典中的数据按value递增排序
 2 r = {x:randint(60,100) for x in 'abcdef'}
 3 print(r)
 4 #{'a': 72, 'b': 71, 'c': 83, 'd': 91, 'e': 79, 'f': 81}
 5 
 6 # sorted将字典中的数据按key递增排序
 7 # 产生的数据即key列表
 8 data = sorted(r)
 9 print(data)
10 #['a', 'b', 'c', 'd', 'e', 'f']
11 
12 #keys显示字典中所有key
13 print(r.keys())
14 #dict_keys(['a', 'b', 'c', 'd', 'e', 'f'])
15 
16 # values显示字典中所有value
17 print(r.values())
18 #dict_values([72, 71, 83, 91, 79, 81])
19
方法1:
  print(r.items())
  data = sorted(r.items(), key=lambda x:x[1])
  #{71: 'b', 72: 'a', 79: 'e', 81: 'f', 83: 'c', 91: 'd'}
   
  方法2:
20 # zip将字典按value:key顺序排列
21 data = zip(r.values(),r.keys())
22 print(data) 
23 #<zip object at 0x0000000002788F48>
24 print(type(data))
25 #<class 'zip'>
26 
27 # sorted将zip类型的数据按key递增排列
28 data = sorted(data)
29 print(type(data))
30 #<class 'list'>
31 # 将list类型转换为dict类型
32 print(dict(data))
33 #{71: 'b', 72: 'a', 79: 'e', 81: 'f', 83: 'c', 91: 'd'}

 

 1 查找字典中按value递减排列,前3个value值对应的key:value
 2 from collections import Counter
 3 from random import randint
 4 
 5 # 随机生成10个[0-20]的int型数值,作为key
 6 data = [randint(0,20) for i in range(10)]
 7 print(data)
 8 #[12, 17, 4, 0, 18, 12, 16, 9, 17, 15]
 9  
10 # 初始化字典的value值为0
11 c= dict.fromkeys(data, 0)
12 print(c)
13 #{12: 0, 17: 0, 4: 0, 0: 0, 18: 0, 16: 0, 9: 0, 15: 0}
14 
15 # 随机生成value
16 c= Counter(data)
17 print(c)
18 #Counter({12: 2, 17: 2, 4: 1, 0: 1, 18: 1, 16: 1, 9: 1, 15: 1})
19 
20 # 根据value值递减排序,取出前三个
21 # 结果类型为列表
22 data = c.most_common(3)
23 print(type(data))
24 #<class 'list'>
25 print(data)
26 #[(12, 2), (17, 2), (4, 1)]

转载于:https://www.cnblogs.com/KSYoon/p/9663270.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值