Python学习记录08-字典的运算

2023-09-09 14:07:34 浏览数 (2)

本节的内容是对字节里的值进行运算,比如求最大值,求最小值,让它们排序等 以下有一个简单的字典,我们的需求是获取字典里最大的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

0 人点赞