首页 > 代码库 > [PY3]——怎样在数据字典中执行一些计算操作(比如求最大值、排序等)

[PY3]——怎样在数据字典中执行一些计算操作(比如求最大值、排序等)

问题

怎样在数据字典中执行一些计算操作(比如求最小值、最大值、排序等等)?

解决方案

zip( )

1. 为了对字典值执行计算操作,通常需要使用 zip() 函数先将键和值反转过来

2. 类似的,也可以使用 zip() 和 sorted() 函数来排列字典数据

prices = {    ACME: 37.20,    AAPL: 612.78,    IBM: 205.55,    HPQ: 37.20,    FB: 10.75}print(min(prices),max(prices))  #直接对字典执行普通的数学运算,其只会对key操作
AAPL IBM

print(min(prices.values()),max(prices.values())) #可通过字典的values函数解决,但输出时只能看到values 
10.75 612.78

print(min(prices,key=lambda x:prices[x])) #可通过min/max的key属性函数解决,但输出同样不好看 
FB

print(min(zip(prices.values(),prices.keys())))    #先通过zip()将字典”反转”为(value,key)的元组序列 
(10.75, ‘FB‘)

print(sorted(zip(prices.values(),prices.keys())))   #若恰巧出现values相同的情况,则根据key的排序结果返回  
[(
10.75, FB), (37.2, ACME), (37.2, HPQ), (205.55, IBM), (612.78, AAPL)]

3. 执行这些计算的时候,需要注意的是 zip() 函数创建的是一个只能访问一次的迭代器

prices_and_names=zip(prices.values(),prices.keys())print(max(prices_and_names))(612.78, AAPL)print(max(prices_and_names))   #第二次再用就报错了ValueError: max() arg is an empty sequence

 

[PY3]——怎样在数据字典中执行一些计算操作(比如求最大值、排序等)