Python 提取N个最大的字典键的程序

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()函数的应用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程