按键长度对字典进行排序。 Python 3.6 [重复]

问题描述 投票:0回答:3

我想按照键的长度对我的字典进行排序(第一个-长度最大的键,最后-长度最小的键)

例如:

dictionary = {"aa" : 1, "aaaaaaa": 2, "aaa" : 3, "a": 4}

排序后的结果一定是:

{"aaaaaaa": 2, "aaa" : 3, "aa" : 1, "a": 4}
python python-3.x sorting dictionary
3个回答
11
投票

字典被认为是无序的,但较新版本的Python(3.6+)会记住插入顺序,所以你可以这样做:

d = {"aa" : 1, "aaaaaaa": 2, "aaa" : 3, "a": 4}

new_d = {}
for k in sorted(d, key=len, reverse=True):
    new_d[k] = d[k]

print(new_d)
# {'aaaaaaa': 2, 'aaa': 3, 'aa': 1, 'a': 4}

2
投票

字典不能以传统方式“排序”,因为它们是无序的键值存储。您可能想要使用多维列表。

>>> d = [["aa", 1], ["aaaaaaa", 2], ["aaa", 3], ["a", 4]]
>>> d
[['aa', 1], ['aaaaaaa', 2], ['aaa', 3], ['a', 4]]
>>> sorted(d, key=lambda l: len(l[0]), reverse=True)
[['aaaaaaa', 2], ['aaa', 3], ['aa', 1], ['a', 4]]

2
投票
dic = {"aa" : 1, "aaaaaaa": 2, "aaa" : 3, "a": 4}
new_dic={}
k = list(dic.items())
k.sort(key=lambda x:len(x[0]),reverse=True)

for i in k :
    new_dic.update({i[0]:i[1]})

print(new_dic)

单内衬解决方案

 res = {a: dic[a] for a, _ in sorted(dic.items(), key=lambda x:x[1], reverse=True)}

© www.soinside.com 2019 - 2024. All rights reserved.