首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对OrderedDict of OrderedDict进行排序?

如何对OrderedDict of OrderedDict进行排序?
EN

Stack Overflow用户
提问于 2011-11-07 00:07:11
回答 3查看 82.3K关注 0票数 64

我正在尝试根据OrderedDict‘depth’键在OrderedDict中对进行排序。那本字典有什么解决办法吗?

代码语言:javascript
复制
OrderedDict([
  (2, OrderedDict([
    ('depth', 0),  
    ('height', 51), 
    ('width', 51),   
    ('id', 100)
  ])), 
  (1, OrderedDict([
    ('depth', 2),  
    ('height', 51), 
    ('width', 51),  
    ('id', 55)
  ])), 
  (0, OrderedDict([
    ('depth', 1),  
    ('height', 51), 
    ('width', 51),  
    ('id', 48)
  ])),
]) 

排序后的数据应该如下所示:

代码语言:javascript
复制
OrderedDict([
  (2, OrderedDict([
    ('depth', 0),  
    ('height', 51), 
    ('width', 51),   
    ('id', 100)
  ])), 
  (0, OrderedDict([
    ('depth', 1),  
    ('height', 51), 
    ('width', 51),  
    ('id', 48)
  ])),
  (1, OrderedDict([
    ('depth', 2),  
    ('height', 51), 
    ('width', 51),  
    ('id', 55)
  ])), 
]) 

知道怎么弄到吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-07 00:09:16

您必须创建一个新的,因为OrderedDict是按插入顺序排序的。

在您的示例中,代码如下所示:

代码语言:javascript
复制
foo = OrderedDict(sorted(foo.items(), key=lambda x: x[1]['depth']))

有关更多示例,请参见http://docs.python.org/dev/library/collections.html#ordereddict-examples-and-recipes

注意,对于Python2,您需要使用.iteritems()而不是.items()

票数 115
EN

Stack Overflow用户

发布于 2011-11-07 00:12:23

代码语言:javascript
复制
>>> OrderedDict(sorted(od.items(), key=lambda item: item[1]['depth']))
票数 20
EN

Stack Overflow用户

发布于 2018-04-05 05:47:19

有时,您可能希望保留初始字典,而不创建新字典。

在这种情况下,您可以执行以下操作:

代码语言:javascript
复制
temp = sorted(list(foo.items()), key=lambda x: x[1]['depth'])
foo.clear()
foo.update(temp)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8031418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档