我想按字典的长度(首个键的长度最大,最后-最小的键)对字典进行排序
例如:
dictionary = {"aa" : 1, "aaaaaaa": 2, "aaa" : 3, "a": 4}
排序后的结果必须是:
{"aaaaaaa": 2, "aaa" : 3, "aa" : 1, "a": 4}
答案 0 :(得分:1)
字典被认为是无序的,但是较新版本的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}
答案 1 :(得分:0)
无法以传统方式对字典进行“排序”,因为它们是无序的键值存储。您可能想使用多维列表。
>>> 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 :(得分:0)
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)