如何对字典进行排序? [复制]

Posted

技术标签:

【中文标题】如何对字典进行排序? [复制]【英文标题】:How to sort dict? [duplicate] 【发布时间】:2013-06-09 19:00:41 【问题描述】:

我有这样结构的字典:

my_dict[object_1] = 'alfa': '1', 'beta': '2', 'etc': '3'
my_dict[object_2] = 'alfa': '5', 'beta': '9', 'etc': '1'
my_dict[object_3] = 'alfa': '7', 'beta': '3', 'etc': '3'
my_dict[object_4] = 'alfa': '3', 'beta': 'a', 'etc': '2'

我想对键“alfa”进行排序,我想得到这个:

my_dict[object_1] = 'alfa': '1', 'beta': '2', 'etc': '3'
my_dict[object_4] = 'alfa': '3', 'beta': 'a', 'etc': '2'
my_dict[object_2] = 'alfa': '5', 'beta': '9', 'etc': '1'
my_dict[object_3] = 'alfa': '7', 'beta': '3', 'etc': '3'

怎么做?

【问题讨论】:

@TheNewIdiot 好听的名字 ;) 【参考方案1】:

您可以遍历字典的排序项 只要items() 返回具有键值的元组列表,就可以先获取它,然后对其进行排序。

>>> a = 1: 'alfa': '1', 'beta': '2', 'etc': '3',
         2: 'alfa': '5', 'beta': '9', 'etc': '1',
         3: 'alfa': '7', 'beta': '3', 'etc': '3', 
         4: 'alfa': '3', 'beta': 'a', 'etc': '2'
>>> for k,v in sorted(a.items(), key=lambda x: x[1]['alfa']):
        print (k, v)
(1, 'etc': '3', 'beta': '2', 'alfa': '1')
(4, 'etc': '2', 'beta': 'a', 'alfa': '3')
(2, 'etc': '1', 'beta': '9', 'alfa': '5')
(3, 'etc': '3', 'beta': '3', 'alfa': '7')

【讨论】:

以上是关于如何对字典进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何按字典中的值对字典列表进行排序? [复制]

如何在 Python 中对字典列表进行多重排序? [复制]

如何对在 url 中传递的字典的键进行排序? [复制]

在Python列表中对嵌套字典进行排序? [复制]

在 C# 中按名称和日期作为键对字典进行排序? [复制]

如何按值对 Python 字典进行排序? [复制]