码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-07-12 18:58:25      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:访问   names   code   error:   zip   err   注意   解决方案   执行   

问题

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

解决方案

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]——怎样在数据字典中执行一些计算操作(比如求最大值、排序等)

标签:访问   names   code   error:   zip   err   注意   解决方案   执行   

原文地址:http://www.cnblogs.com/snsdzjlz320/p/7156672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!