我在 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/