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

6
尝试按照此处的建议排序Python字典如何根据值的绝对值将Python字典以排序的方式输出?
我尝试过:
sorted(mydict, key=abs(mydict.get))

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

2个回答

9

您可以使用:

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

这里使用了一个新函数(使用lambda定义),它接受字典的键并返回该键对应值的绝对值。这意味着结果将按照存储在字典中的绝对值进行排序。

3
您需要通过将应用程序包装在另一个函数中来进行组合,因此不是这样:
>>> 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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接