按绝对值值对Python字典进行排序

时间:2017-05-14 04:37:42

标签: python python-3.x sorting dictionary

试图建立关于排序Python字典here的建议,我将如何根据值的绝对值按排序顺序打印Python字典?

我试过了:

sorted(mydict, key=abs(mydict.get))

但是这会引发错误bad operand type for abs(): 'builtin_function_or_method' abs()期望一个数字,而不是一个函数。另外,abs()是函数abs的返回值,而key只是期望一个函数。

2 个答案:

答案 0 :(得分:6)

您可以使用:

sorted(mydict, key=lambda dict_key: abs(mydict[dict_key]))

这使用一个新函数(使用lambda定义),它接受字典的键并返回该键值的绝对值。

这意味着结果将按字典中存储的绝对值进行排序。

答案 1 :(得分:2)

你需要通过包装另一个函数来撰写应用程序,所以不要这样做:

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

您可以使用函数组合(在本例中使用lambda):

>>> sorted(d, key=lambda k: abs(d[k]))
['a', 'b', 'c', 'd']
相关问题