今天,我遇到了dict方法get,它在字典中给定一个键,返回相关的值。

这个函数的用途是什么?如果我想在字典中找到一个与键相关的值,我可以只做dict[key],它返回相同的东西:

dictionary = {"Name": "Harry", "Age": 17}
dictionary["Name"]
dictionary.get("Name")

当前回答

另一个我没有看到提到的用例是作为sort, max和min等函数的key参数。get方法允许根据它们的值返回键。

>>> ages = {"Harry": 17, "Lucy": 16, "Charlie": 18}
>>> print(sorted(ages, key=ages.get))
['Lucy', 'Harry', 'Charlie']
>>> print(max(ages, key=ages.get))
Charlie
>>> print(min(ages, key=ages.get))
Lucy

感谢对不同问题的回答提供了这个用例!

其他回答

这样做的目的是,如果没有找到键,您可以给出一个默认值,这非常有用

dictionary.get("Name",'harry')

有一个区别,这可能是一个优势,如果我们正在寻找一个不存在的键,我们将得到None,不像我们使用括号符号时,在这种情况下,我们将得到一个错误抛出:

print(dictionary.get("address")) # None
print(dictionary["address"]) # throws KeyError: 'address'

get方法最后一个很酷的地方是,它接收了一个额外的可选参数作为默认值,也就是说,如果我们试图获取学生的分数值,但学生没有分数键,我们可以得到0。

所以与其这样做(或类似的事情):

score = None
try:
    score = dictionary["score"]
except KeyError:
    score = 0

我们可以这样做:

score = dictionary.get("score", 0)
# score = 0

它允许您提供一个默认值,而不是在没有找到该值时得到一个错误。像这样的劝说代码:

class dictionary():
    def get(self,key,default):
         if self[key] is not found : 
               return default
         else:
               return self[key]

这个函数的用途是什么?

一个特别的用法是用字典计数。让我们假设您想要计算给定列表中每个元素的出现次数。常见的方法是创建一个字典,其中键是元素,值是出现的次数。

fruits = ['apple', 'banana', 'peach', 'apple', 'pear']
d = {}
for fruit in fruits:
    if fruit not in d:
        d[fruit] = 0
    d[fruit] += 1

使用.get()方法,你可以使这段代码更紧凑和清晰:

for fruit in fruits:
    d[fruit] = d.get(fruit, 0) + 1

简短的回答

方括号用于条件查找,当缺少键时,条件查找可能会失败并返回KeyError。

get()方法用于无条件查找,这种查找永远不会失败,因为已经提供了默认值。

基本方法和辅助方法

方括号调用__getitem__方法,这是字典等映射的基础。

get()方法是在该功能之上分层的帮助器。它是通用编码模式的捷径:

try:
    v = d[k]
except KeyError:
    v = default_value