【问题标题】:Sorting dictionary based on absolute value基于绝对值的字典排序
【发布时间】:2021-10-11 13:12:34
【问题描述】:

我正在尝试按字典值的绝对值对字典进行排序,而实际上并未将其值更改为绝对值。

例如,如果我们有一个字典

my_dict = {(): 10, ("desk", "chair"): 4, ("coke"): -20}

我希望最终的排序输出是

{("desk", "chair"): 4, (): 10, ("coke"): -20}

我通过简单的研究找到了一种基于字典绝对值排序的方法

my_dict = {k, v for k,v in sorted(my_dict.items(), key = lambda dict_key: abs(my_dict[dict_key]))}

但是,在运行时我得到KeyError: ((): 10)。我不知道如何干净地修改我的代码来解释空值。有任何想法吗?我试图查看其他文档和文章,但找不到任何原因。

【问题讨论】:

  • 这不是你得到的错误。
  • dict(sorted(my_dict.items(), key=lambda x: abs(x[1])))
  • {k, v for 是语法错误。以后需要调试帮助,需要提供minimal reproducible example

标签: python python-3.x sorting


【解决方案1】:

只需key=lambda x: abs(x[1]))}

my_dict = dict(sorted(my_dict.items(), key=lambda x: abs(x[1])))

你也可以试试这个

my_dict = {k: v for k,v in sorted(my_dict.items(), key=lambda x: abs(x[1]))}
print(my_dict)

输出:

{('desk', 'chair'): 4, (): 10, 'coke': -20}

【讨论】:

    猜你喜欢
    • 2016-12-05
    • 1970-01-01
    • 2017-10-13
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多