gpt4 book ai didi

Python:基于键值长度的OrderedDictionary排序

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:56 25 4
gpt4 key购买 nike

我有一个这样的对象:

t = {'rand_key_1': ['x'], 'rand_key_2': [13,23], 'rand_key_3': [(1)], 'rk5': [1,100,3,4,3,3]}

一个带有随机键(字符串和/或整数)的字典,所有键都有一个列表作为值,具有不同的大小。

我想把这个字典变成一个 OrderedDict,它根据字典项目列表的长度排序。所以在订购后我想得到:

t_ordered = {'rk5': ..., 'rand_key_2': .., 'rand_key_1': .., 'rand_key_3': ..}

(如果两个或更多项具有相同的值,则它们的顺序并不重要。

我试过了,但我失败了:

OrderedDict(sorted(d, key=lambda t: len(t[1])))

我没有经验,所以如果我尝试的是 super 愚蠢的,请原谅。

我能做什么?

谢谢。

最佳答案

您实际上非常接近传递给 sorted 的排序函数。需要注意的是, sorted 将按顺序返回字典 keys 的可互操作。因此,如果我们修复您的函数以使用每个键为字典编制索引:

>>> sorted(t, key=lambda k: len(t[k]))
['rand_key_3', 'rand_key_1', 'rand_key_2', 'rk5']

您还可以指定以相反的顺序返回键并直接迭代这些键:

>>> for sorted_key in sorted(t, key=lambda k: len(t[k]), reverse=True):
... print sorted_key, t[sorted_key]

rk5 [1, 100, 3, 4, 3, 3]
rand_key_2 [13, 23]
rand_key_3 [1]
rand_key_1 ['x']

通常您不需要创建 OrderedDict,因为您只需使用最新的字典数据迭代一个新的排序列表。

关于Python:基于键值长度的OrderedDictionary排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12904975/

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