gpt4 book ai didi

python-3.x - 根据列表大小对字典进行排序,然后在 Python 中按其键按字母顺序排序?

转载 作者:行者123 更新时间:2023-12-04 02:26:11 32 4
gpt4 key购买 nike

所以我有一个小问题。不久前,我在这里得到了关于使用键对字典进行排序的帮助,这些键根据列表中事物的值对每个键都有一个列表。具有最少值的列表的键在左侧,具有最多值的列表的键在右侧。那效果很好。现在我知道如何按字母顺序对字典键进行排序,但我无法将其与上述内容结合使用。

我试图首先根据键列表包含多少个值对下面的字典进行排序...然后如果键列表包含与前一个键列表相同数量的值,则按字母顺序排序。

所以在我有这个之前:
Dict = {"anna":[1,2,3],"billy":[1,2],"cilla":[1,2,3,4],"cecillia":[1,2,3,4],"dan":[1]}
之后如果一切顺利,我希望...
Dict = {"dan":[1],"billy":[1,2],"anna":[1,2,3],"cecillia":[1,2,3,4],"cilla":[1,2,3,4]}
正如你在上面看到的,cecillia来之前 cilla因为它们的列表中都有 4 个值...和 ​​dan排在第一位,因为他的列表中的值最少。我希望这是有道理的。我现在要得到以下结果是:
ascending = sorted(Dict, key =lambda x: len(Dict[x]))
这给了我例如:
{"dan":[1],"billy":[1,2],"anna":[1,2,3],"cilla":[1,2,3,4],"cecillia":[1,2,3,4]}
所以它有效但仅适用于列表中的值..现在当我去的时候
ascending.sort()
它按字母顺序对字典进行排序,但值从最小到最大的顺序消失了。有谁知道如何将这两件事结合起来?我将不胜感激。

最佳答案

您不能对字典进行排序,因此必须将其转换为元组列表:

D = [ (x, Dict[x]) for x in Dict]
ascending = sorted(D, key = lambda x: x[1])
ascending.sort()

http://wiki.python.org/moin/HowTo/Sorting .顺便说一句,您所依赖的功能实际上是因为排序算法是 stable (当我用 Python 编程时显然不是这种情况)。

关于python-3.x - 根据列表大小对字典进行排序,然后在 Python 中按其键按字母顺序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10004264/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com