python购物满500打八五折 python打折问题

您所在的位置:网站首页 python商场打折编程序 python购物满500打八五折 python打折问题

python购物满500打八五折 python打折问题

2024-06-30 12:47| 来源: 网络整理| 查看: 265

问题 我们想在字典上对数据执行各式各样的计算(比如求最小值,最大值,排序等)

假设有一个字典在股票名称和对应的价格间做了映射:

price={ 'ACME':45.23, 'AAPL':623.78, 'IBM':206.68, 'HQP':37.20, 'Fb':10.75, }

为了能对字典内容做些有用的计算,通常会利用zip()将字典的键和值反转过来。例如下列的代码会告诉我们如何找出价格最低和最高的股票。

min_price=min(zip(price.values(),price.keys())) print(min_price) max_price=max(zip(price.values(),price.keys())) print(max_price)

同样要对数据排序只需要使用zip()再配合sorted()就可以了,比如:

price_sorted=sorted(zip(price.values(),price.keys())) print(price_sorted)

3.注意 当进行这些计算时,请注意zip()创建了一个迭代器,它的内容只能被消费一次。例如下面的代码就是错误的:

prices_and_names=zip(price.values(),price.keys()) print(min(prices_and_names)) print(max(prices_and_names))

如果尝试在字典上执行常见的数据操作,将会发现它们只会处理键,而不是值。例如:

print(min(price)) # return 'AAPL' print(max(price)) # return 'IBM'

这可能不是我们所期望的,因为实际上我们是尝试对字典的值做计算。可以利用字典的value()方法来解决这个问题:

print(min(price.values())) # return '10.75' print(max(price.values())) # return '623.78'

不幸的是,通常这也不是我们所期望的。比如,我们可能想知道相应的键所关联的信息是什么(例如哪只股票的价格最低?) 如果提供一个key参数传递给min()和max(),就能得到最大值和最小值所对应的键是什么。例如:

min(price,key=lambda k:price[k]) max(price,key=lambda k:price[k])

但是要得到最小值的话,还需要额外执行一次查找。例如:

min_value=price[min(price,key=lambda k:price[k])]

利用了zip()的解决方案是通过将字典的键—值对“反转”为值—键对序列来解决这个问题的。 当在这样的元组上执行比较操作时,值会先进行比较,然后才是键。这完全符合我们的期望,允许我们用一条单独的语句轻松的对字典里的内容做整理和排序。 应要注意的是,当涉及(value,key)对的比较时,如果碰巧有多个条目拥有相同的value值,那么此时key将用来作为判定结果的依据。例如,在计算min()和max()时,如果碰巧value的值相同,则将返回拥有最小或最大key值的那个条目。示例如下:

price={'AAA':45.23,'zzz':45.23} min(zip(price.values(),price.keys())) #(45.23,'AAA') max(zip(price.values(),price.keys()))#(45.23,'zzz')



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3