如何按值对 Python 字典进行排序? [复制]
Posted
技术标签:
【中文标题】如何按值对 Python 字典进行排序? [复制]【英文标题】:How to sort a Python dictionary by value? [duplicate] 【发布时间】:2012-08-09 14:08:46 【问题描述】:可能重复:In Python how do I sort a list of dictionaries by values of the dictionary?Sorting Python dictionary based on nested dictionary values
我有如下形式的字典:
a_dict = 'e': (1, 100), 'a': (2, 3)
我无法按元组的第二个元素对其进行排序。结果字典将如下所示:
a_dict = 'a': (2, 3), 'e': (1, 100)
【问题讨论】:
@Tichodroma:这是一个字典列表,这只是一个字典,不在列表中。 【参考方案1】:在您的示例中,您使用的是字典列表。按键排序:
mydict = 'carl':40,
'alan':2,
'bob':1,
'danny':3
for key in sorted(mydict.iterkeys()):
print "%s: %s" % (key, mydict[key])
alan: 2
bob: 1
carl: 40
danny: 3
如果您想按值对字典进行排序,请参阅How do I sort a dictionary by value?
【讨论】:
您指的是哪个字典列表?问题中的代码有一个以元组为值的字典,根本没有列表。 当然你是对的。我犯了一个愚蠢的错误。【参考方案2】:字典不能这样排序,但您可以对其内容进行排序:
sorted(a_dict.items(), key=lambda (k, (v1, v2)): v2)
sorted(a_dict.items(), key=lambda item: item[1][1]) # Python 3
您可以将结果放入collections.OrderedDict
(从 2.7 开始):
OrderedDict(sorted(a_dict.items(), key=lambda (k, (v1, v2)): v2))
OrderedDict(sorted(a_dict.items(), key=lambda item: item[1][1]) # Python 3
【讨论】:
在您的 lambda 中完成的参数解包仅适用于 Python 2.x。在 Python 3 中,您需要执行key=lambda k, v : v[1]
。以上是关于如何按值对 Python 字典进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章