理解字典.get在Python中

2024-05-15 04:48:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在读这篇文章真的很有帮助,所以请发到sorting dictionaries上。最流行的答案之一就是:

sorted(dict1, key=dict1.get)

虽然这看起来工作得很好,但我没有得到key=dict1.get部分。在

这里get到底是什么,它做什么?在

我只熟悉使用get('X')从字典中提取X。。。 而且我在字典和stdtype的docs中找不到任何东西,所以我非常感谢任何的指针!在

这里是theyget()的看法,还是完全不同? 谢谢!在

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


Tags: thekey答案defaultdocsget字典is
3条回答

sortedkey参数是一个可调用的(例如函数),它接受一个参数。在

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

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

这是因为1<;2<;3。在

另一方面,如果应该使用不同的值进行比较,可以用key来定义。例如,要按长度对字符串排序,可以执行以下操作:

^{pr2}$

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

但是,您可以传递任何其他可调用的,而不是函数。在您的示例中,这是dict1.get,因此对于dict中的每个键,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')。在

sorted(dict1, key=dict1.get)

是一种不那么冗长,更像Python的说法:

^{pr2}$

请记住,迭代字典将返回它的键,因此get方法接受作为字典键的参数,而这些参数又返回键所指向的值。在

这是一种简单的说法,使用值作为排序标准对字典键进行排序。在

正如您所发现的,get只获取与给定键对应的值。sorted将遍历它传递的iterable。在本例中,iterable是一个dict,而迭代一个dict只是遍历它的键。如果要根据值排序,则需要将键转换为相应的值,当然,最明显的方法是使用get。在

为了澄清这一点,这是为了如果您想要一个基于键值排序的键列表。如果您只需要一个排序的值列表,您可以sorted(dict1.values()),如果您希望键按它们的值(而不是它们映射到的值)排序,那么您可以sorted(dict1)。在

示例:

>>> d = {'a': 3, 'b': 2, 'c': 1}
>>> sorted(d)
['a', 'b', 'c']
>>> sorted(d.values())
[1, 2, 3]
>>> sorted(d, key=d.get)
['c', 'b', 'a']

相关问题 更多 >

    热门问题