我正在尝试对字典中的值进行排序。每个值都是 (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])
最佳答案
你快到了,你想要做的是在值的第二个元素上使用 sorted
和 key=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/