p =sorted(d.items(), key =lambda item:item[1],reverse =True)for i,(k,v)inenumerate(p,1):
d[k]=(i,v)
显示其排名信息方法二
{k:(i,v)for i,(k,v)inenumerate(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()))
如何快速找到多个字典中的公共键
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]ifall(map(lambda d: k in d, dl[1:]))]
几个字典的简洁操作# 如何根据字典中的值进行排名方法一将字典转换为元组表方法二方法三显示其排名信息方法一显示其排名信息方法二如何快速找到多个字典中的公共键# 如何根据字典中的值进行排名```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,reve