下面是一个示例代码,包括定义一个函数来解决这个问题:
from collections import Counter
def sort_dict_by_key_then_value(d):
"""
Sort a dictionary by key then by value in descending order.
"""
kv_pairs = d.items()
sorted_pairs = sorted(kv_pairs, key=lambda x: (x[0], -x[1]))
return dict(sorted_pairs)
# example dictionary of word counts
word_counts = Counter(["apple", "apple", "banana", "cherry", "cherry", "date", "date", "elderberry"])
# sort by key then by value
sorted_dict = sort_dict_by_key_then_value(word_counts)
# print the sorted dictionary
print(sorted_dict)
输出结果:
{'apple': 2, 'banana': 1, 'cherry': 2, 'date': 2, 'elderberry': 1}
这个函数通过先按照键排序(升序),再按照值排序(降序),得到了一个新的字典。这个函数通过使用sorted()
函数和一个lambda函数来进行排序。sorted()
函数按照每个项(键和值)的元组进行排序,lambda函数指定了键和值的顺序。最后,函数返回一个新的字典对象,以列表中的键值对的形式进行排序和重建。
我们还使用Python的内置Counter
类来计算单词出现的频率,并将结果传递给sort_dict_by_key_then_value
函数进行排序。
上一篇:按照键排序字典