python - 理解 Python 中的 dictionary.get

标签 python dictionary

我在 sorting dictionaries 上阅读了这篇非常有用的 SO 帖子.最受欢迎的答案之一表明了这一点:

sorted(dict1, key=dict1.get)

虽然这似乎工作得很好,但我没有得到 key=dict1.get部分。

究竟是什么get这里有什么作用?

我只熟悉使用 get('X')从字典中提取 X...
我在 docs 中找不到任何东西关于字典和标准类型,所以非常感谢任何指针!

注意这里是什么they不得不说get() ,或者这是完全不同的东西?
谢谢!

get(key[, default]) Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this method never raises a KeyError

最佳答案

key论据 sorted是一个可调用的(例如一个函数),它接受一个参数。

默认情况下,sorted通过相互比较来对值进行排序。例如:

sorted([2, 3, 1])   # returns [1, 2, 3]

这是因为 1 < 2 < 3。

另一方面,如果应该使用不同的值进行比较,则可以使用 key 定义。 .例如,要按长度对字符串进行排序,可以这样做:
def string_length(s):
    return len(s)

sorted(['abcd', 'efghi', 'jk'], key=string_length)  # returns ['jk', 'abcd', 'efghi']

这是因为 string_length('jk') < string_length('abcd') < string_length('efghi') .

但是,您可以传递任何其他可调用对象,而不是函数。在您的示例中,即 dict1.get ,所以对于字典中的每个键,dict1.get(key)将被执行,其结果将用于比较。
dict1 = {'a':3, 'b':1, 'c':2}

sorted(dict1, key=dict1.get) # returns ['b', 'c', 'a']

这是因为 dict1.get('b') < dict1.get('c') < dict1.get('a') .

关于python - 理解 Python 中的 dictionary.get,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39496096/

相关文章:

python - 我可以检查一个值是默认提供的还是用户提供的?

python - 如何告诉 MATLAB 我正在导入的数据是一系列向量,而不仅仅是一系列字母?

python - 如何在 django 中创建缺失的数据库表?

python - django - 如何用 kwargs 做到这一点

python - 在 python 中,我可以使用 tee 延迟生成迭代器的副本吗?

python:从字典中创建直方图

c# - 如何获取 Dictionary<T, S> 中键的 ReadOnlyCollection<T>

java - Java 中的字符串与 Map 中的键进行比较

python - 我如何使用(唯一键和最大值)从字典中提取所有值

python - 从列表中搜索并替换字符串中的字符