python - 使用 lambda 对字典的元素进行排序

标签 python python-3.x sorting dictionary

我正在尝试对字典中的值进行排序。每个值都是 (element, [element,element...]) 形式的元组。

所以如果它看起来像这样:

{'5': (2, ['6']), '1': (3, ['4', '3']), '7': (3, ['9', '11', '12'])}

它应该是这样结束的:

{'5': (2, ['6']), '1': (3, ['3', '4']), '7': (3, ['11', '12', '9'])}

如您所见,顺序是字典顺序。

我尝试使用 lambda 进行排序,但无法进入列表:

sortedDict = sorted(orderDict.values(),key=lambda x:x[0])

最佳答案

你快到了,你想要做的是在值的第二个元素上使用 sortedkey=str (如果你不确定你的元素总是 str 类型)。

此外,您不需要为此使用 lambda 表达式。

这可以简单地使用 dict comprehension 来完成:

d = {'5': (2, ['6']), '1': (3, ['4', '3']), '7': (3, ['9', '11', '12'])}

sorted_d = {k: (v0, sorted(v1, key=str)) for k, (v0, v1) in d.items()}

如果您想就地执行此操作,则 answer of @ZeroPiraeus是推荐的方式。由于 sort 是就地操作,原则上您可以将其打包在列表理解中。 但是请注意,这不是推荐的方式,因为您将生成一个您不使用的列表:

In [38]: [v1.sort(key=str) for _, v1 in d.values()]                            
Out[38]: [None, None, None]

关于python - 使用 lambda 对字典的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53895327/

相关文章:

python - 我在哪里可以找到 QGIS 的所有 python 函数的概述

javascript - 在angularjs中对数组进行排序

python - 如何在 float 圆柱轴上旋转刻度标签?

python - 使用 Python Mechanize 上传文件

python - 制作 Tkinter Photoimage 使 python 程序崩溃

python-3.x - 如何从不断刷新网页元素的网页中循环元素

mysql - 使用 JSON 数据通过数学对 SQL 行进行排序

perl - 命令行 "sort | uniq -c | sort -n"的替代方案

python - 计算网格中点组合之间的距离

python - psycopg2.编程错误: incomplete placeholder: '%(' without ')'