Python 提取N个最大的字典键的程序
Python字典是一种数据结构,可以用于各种操作,使其成为一个多产的编程工具。它以键值对的形式存储数据,即每个数据都可以用一个唯一的键标记。字典中的键是与不同值关联的标识符,可以访问、修改和删除这些值。
根据任务的需要,键可以按不同的顺序进行排序和提取。在本文中,我们将讨论一个类似的概念,即提取 N个最大 的字典键。我们将在这些唯一键上操作,并提取相关的数据。
理解问题
考虑一个具有随机唯一键值的字典,我们的任务是从字典中分离 最大的N个 键。让我们通过一个示例来理解这个问题-
输入输出场景
让我们考虑一个具有以下值的字典-
Input:
dict1 = {12 : 10, 22 : 12, 18 : 4, 4 : 8, 20 : 14, 9 : 13}
如果 N 的值是 4,则应返回原始字典中的4个最大的键值。
Output: [22, 20, 18, 12]
返回最大的N个键值。现在我们已经理解了问题陈述,让我们讨论一些解决方案。
使用迭代和Max()
这是从字典中提取N个最大键的基本方法。我们将创建一个字典和两个空列表,用于存储最大值和参考值。然后,我们将传递“ N ”值,并通过迭代和“ .items() ”方法提取键值。
这些提取的值将存储在一个列表(Maxlis)中。我们将再次迭代附加的字典键“ N ”次,提取所有最大值。在每次迭代中,将从列表中删除最大键值,并打印具有最大N个键的列表(Nlargest)。
示例
以下是使用迭代和附加方式提取N个最大字典键的示例 –
dict1 = {12 : 10, 22 : 12, 18 : 4, 4 : 8, 20 : 14, 9 : 13}
Maxlis = []
N = 4
Nlargest = []
print(f"The original dictionary is: {dict1}")
for keys, values in dict1.items():
Maxlis.append(keys)
for x in range(N):
maxval = max(Maxlis)
Nlargest.append(maxval)
Maxlis.remove(maxval)
print(f"The list of N largest dictionaries keys: {Nlargest}")
输出
The original dictionary is: {12: 10, 22: 12, 18: 4, 4: 8, 20: 14, 9: 13}
The list of N largest dictionaries keys: [22, 20, 18, 12]
使用迭代和sorted() + Lambda
这是一种提取N个最大键的高级方法。在这种方法中,我们将使用迭代和“.items()”方法来检索所有字典的键。我们将使用“sorted()”函数的“key”参数来指定另一个函数(lambda)来处理提取逻辑。Lambda函数提取键并通过sorted()函数对它们进行排序。
“reverse = True”语句按降序排序键值。最后,我们使用切片技术从字典中仅提取出前N个键,并将它们存储在一个列表中(Nlargest)。
示例
以下是一个示例 –
dict1 = {12 : 10, 22 : 12, 18 : 4, 4 : 8, 20 : 14, 9 : 13}
N = 4
Nlargest = []
print(f"The original dictionary is: {dict1}")
for keys, values in sorted(dict1.items(), key = lambda item : item[0],
reverse = True) [:N]:
Nlargest.append(keys)
print(f"The N largest keys are: {Nlargest}")
输出
The original dictionary is: {12: 10, 22: 12, 18: 4, 4: 8, 20: 14, 9: 13}
The N largest keys are: [22, 20, 18, 12]
使用Sorted() + Itemgetter()
不使用lambda函数来提取项目,我们可以使用“ itemgetter() ”函数来自 operator 模块。我们将使用相同的迭代和排序键的概念,但是“ key ”参数将分配“ itemgetter() ”函数用于键的提取。
示例
以下是一个示例-
from operator import itemgetter
dict1 = {12 : 10, 22 : 12, 18 : 4, 4 : 8, 20 : 14, 9 : 13}
N = 4
Nlargest = []
print(f"The original dictionary is: {dict1}")
for keys, values in sorted(dict1.items(), key = itemgetter(0),
reverse = True) [:N]:
Nlargest.append(keys)
print(f"The N largest keys are: {Nlargest}")
输出
The original dictionary is: {12: 10, 22: 12, 18: 4, 4: 8, 20: 14, 9: 13}
The N largest keys are: [22, 20, 18, 12]
其他解决方案和见解
有几种技术可以用来从字典中提取最大的N个键,包括使用“nlargest()”函数来自“heapq”模块以及基于函数的排序。设置“lambda”和“itemgetter”函数的正确值非常关键,因为它们为项目的排序和提取建立了基础。
结论
在本文中,我们讨论了许多解决方案来提取N个最大的字典值。我们从一个基本的粗暴方法开始,将最大的键分离并添加。之后,我们讨论了一些高级解决方案,以产生一个细致和优化的程序。我们了解了sorted()、lambda、itemgetter和max()函数的应用。