【问题标题】:sort nested dict排序嵌套字典
【发布时间】:2021-01-07 02:03:06
【问题描述】:

我在 python 中有一个字典

data={'d':{'2022-01-04':'completed'},'b':{'2020-12-04':'not competed'}}

我想按日期排序此列表 所以结果应该是这样的

data={'b':{'2020-12-04':'not competed'},'d':{'2022-01-04':'completed'}}

试过

{i:sorted(data[i].items(), key=lambda x: x[0]) for i in data} 

但它只对子字典进行排序,知道怎么做吗?

【问题讨论】:

  • 你只是告诉它对子dict进行排序。
  • 子字典会一直只有一个键值对吗?
  • 在 python 中,dict 没有排序。使用OrderedDictlisttuples

标签: python dictionary nested


【解决方案1】:

这很丑陋,但以下似乎可行:

data={'d': {'2022-01-04': 'completed'},
      'b': {'2020-12-04': 'not competed'}}

data = dict(sorted(data.items(), key=lambda pair: next(iter(pair[1]))))
list(pair[1].keys())[0]))
print(data)

输出:

{'b': {'2020-12-04': 'not competed'}, 'd': {'2022-01-04': 'completed'}}

【讨论】:

  • 哇,太好了。我快到了,但没有得到它:(
  • 非常感谢我的朋友,我已经尝试了一段时间,这确实很好用。答案被接受
  • ikel:不客气。我认为最棘手的部分是从嵌套字典中提取日期键,因为它的值在每个字典中都不同。我的答案中的(现在略有更新)代码似乎是最有效的方式。
猜你喜欢
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 2014-09-13
  • 2015-11-12
  • 2019-05-08
  • 2020-09-17
  • 2019-12-02
相关资源
最近更新 更多