python 字典中简介而不失高级的几个操作

# 如何根据字典中的值进行排名


```python
```python
`from random import randint
#生成一个字典
d = {k: randint(50,100) for k in 'abcdefg'}
方法一将字典转换为元组表
l = [(v,k) for k, v in d.items()]
sorted(l,reverse = True)
方法二
`l  = list(zip(d.values(),d.keys()))
sorted(l,reverse = True)`
方法三
sorted(d.items(), key = lambda item:item[1],reverse = True) 
显示其排名信息方法一
p = sorted(d.items(), key = lambda item:item[1],reverse = True) 
for i, (k,v) in enumerate(p,1):
    d[k]=(i,v)
显示其排名信息方法二
{k:(i,v) for i,(k,v) in enumerate(p,1)}`




## 如何统计序列中元素的频度

```python
`data = [randint(0,20) for _ in range(30)]
d = dict.fromkeys(data,0)
d`:

在这里插入图片描述

 for x in data:
    d[x] += 1
 d

在这里插入图片描述

#列表解析
sorted([(v,k) for k,v in d.items()], reverse = True)[:3]# 上述方法不是很好,因为如果列表很大的话,你只需要前三个的话,
#上述方法对整个列表进行了排序,造成浪费内存和时间


import heapq
heapq.nlargest(3,((v,k) for k,v in d.items()))

3. 增加了 **图片拖拽** 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;

如何快速找到多个字典中的公共键

from random import sample
sample('abcdefg',3) 

## 功能快捷键

d1 = {k: randint(1,4) for k in sample('abcdefg',randint(3,6))}
d2 = {k: randint(1,4) for k in sample('abcdefg',randint(3,6))}
d3 = {k: randint(1,4) for k in sample('abcdefg',randint(3,6))}
print(d3,d2,d1)

在这里插入图片描述

#思路一:找出1中的每一个建分别判断是否在第二个和第三个

for k in d1:
    if k in d2 and k in d3:
        print(k)

        
[k for k in d1 if k in d2 and k in d3]    

在这里插入图片描述

#实际中可能是这样的,我们得到的是一个大列表,不知里面有多少字典
dl= [d1,d2,d3]
[k for k in dl[0] if all(map(lambda d: k in d, dl[1:]))]

在这里插入图片描述

# 思路二 利用集合的交集操作
s1 = d1.keys()
s2 = d2.keys()
s1&s2

在这里插入图片描述

dl 

在这里插入图片描述

reduce(lambda a,b : a&b, map(dict.keys, dl))

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值