Py学习  »  Python

按关键字长度对词典排序。python 3.6[副本]

J. Doe • 6 年前 • 1938 次点击  

我想把我的字典归类为键的长度(第一个键的长度最大,最后一个键的长度最小)

例如:

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

因此,排序后必须:

{"aaaaaaa": 2, "aaa" : 3, "aa" : 1, "a": 4}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43532
文章 [ 3 ]  |  最新文章 6 年前
prashant rana
Reply   •   1 楼
prashant rana    7 年前
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)
vgar
Reply   •   2 楼
vgar    7 年前

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

>>> 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]]
Austin
Reply   •   3 楼
Austin    7 年前

字典被认为是无序的,但较新版本的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}