【问题标题】:sort nested dict with sum of nested key values使用嵌套键值的总和对嵌套字典进行排序
【发布时间】:2021-05-17 19:23:25
【问题描述】:

所以我试图对嵌套键的值求和,并按此值对键值进行排序。我有一个嵌套的字典,如下所示:

dict_items([('“The', {'T': 1}), ('reason', {'T': 1}), ('we', {'T': 1, 'O': 1}), ('have', {'T': 1, 'O': 1}),...

我想对与键 'O''T' 关联的值求和,然后通过将每个 'O' 和 @987654327 求和产生的值对单词 Thereason... 进行排序@values 以便我得到一个带有单词及其值的字典。

到目前为止,我有以下返回单词的计数,但不返回附加的单词:

sorted([sum(i[1].values()) for i in dct.items()], reverse=True)

我已经尝试了以下方法,但出现“O”的关键错误

my_word_dct = sorted(dct.items(), key = lambda x: x[1]['O'] + x[1]['T'], reverse = True)

任何想法我哪里出错了?

编辑:预期的输出将类似于:

{'we':2, 'have':2, 'The':1, 'reason':1...}

提前致谢!!

【问题讨论】:

  • 您是要对字典进行排序(仅在 python3.7 之后可能)还是只想要按排序顺序排列的键列表?说明您的预期输出会有所帮助。
  • 啊,是的!在底部的编辑中添加
  • 字典一般不排序,需要排序吗?不如就做d2 = {k : sum(d[k].values()) for k in d}
  • 啊,太好了!这对我来说看起来不错。谢谢
  • 如果他们的总和一样呢?

标签: python sorting dictionary


【解决方案1】:

您需要 .get() 函数,以防您的字典没有问题的键。

x[1].get('O',0) + x[1].get('T',0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    相关资源
    最近更新 更多