本节的内容是对字节里的值进行运算,比如求最大值,求最小值,让它们排序等 以下有一个简单的字典,我们的需求是获取字典里最大的value的那一对。
当我们要获取它里面的最大或者最小的值时候。我们通常会使用min 和max函数来对 字典的value做比较。
代码语言:javascript复制prices={
"apple":'5',
"peach":'3',
"pear":'4'
}
print(max(prices.values()))
print(min(prices.values()))
不能直接用min或者max函数作用于字典,因为你会发现,它最终只生效在key上了。
代码语言:javascript复制prices={
"apple":'5',
"peach":'3',
"pear":'4'
}
print(min(prices)) # apple
print(max(prices)) #pear
以上场景,不管对不对,只是输出了key 或者value。没有满足期望。 最简单的方法就是把value 和key翻转过来,在形成一个字典,获取最大的value以及key即可。
代码语言:javascript复制prices={
"apple":'5',
"peach":'3',
"pear":'4'
}
secirp={v:k for k,v in prices.items()}
print(secirp) #{'5': 'apple', '3': 'peach', '4': 'pear'}
print(max(secirp),secirp[max(secirp)]) #5 apple
Python提供了内置的函数,zip,他可以将键和值反过来。有了这个函数,刚刚的需求就很简单了。
代码语言:javascript复制maxItem=max( zip(prices.values(),prices.keys()))
minItem=min(zip(prices.values(),prices.keys()))
print(maxItem,minItem) #('5', 'apple') ('3', 'peach')
但是值得注意的是,zip() 函数创建的是一个只能访问一次的迭代器,不能用多次
代码语言:javascript复制newPri = zip(prices.values(),prices.values())
print(max(newPri))
print(min(newPri)) #第二次使用newPri就会报错,ValueError: min() arg is an empty sequence