0

0

Python教程:如何在NumPy数组中对内嵌字典进行值排序

心靈之曲

心靈之曲

发布时间:2025-09-28 13:38:01

|

177人浏览过

|

来源于php中文网

原创

Python教程:如何在NumPy数组中对内嵌字典进行值排序

本教程旨在解决如何在包含单个字典的NumPy数组中,对该字典的键值对进行排序的问题。文章详细介绍了如何使用np.array.item()方法提取内嵌字典,并结合Python内置的sorted()函数和lambda表达式,实现根据字典值进行降序排序,最终重构为一个有序字典。通过示例代码和注意事项,帮助读者理解并掌握处理此类数据结构的实用技巧。

理解数据结构:NumPy数组中的字典

在数据处理过程中,我们有时会遇到将python字典封装到numpy数组中的情况。例如,在对csv文件进行数据清洗和聚合后,可能会得到一个以城市名为键、总伤亡人数为值的字典。如果这个字典随后被直接传递给np.array(),numpy会将其视为一个单一的python对象存储在数组中。

考虑以下场景,我们已经从数据源中聚合了各个城市的伤亡人数,并存储在一个字典中:

import numpy as np

city_casualties = {
    'New Delhi': 2095, 'Samastipur': 4, 'Bombay': 210, 'Imphal': 603, 'Aizawl': 2,
    'Amapur': 2, 'Raisikah': 1, 'Champhai': 1, 'Jamshedpur': 32, 'Chennai': 366,
    'Chiaplant': 1, 'Tindol': 7, 'Calcutta': 57, 'Tirupattur': 6, 'Gauhati': 112,
    'Jorhat': 3, 'Massad': 1, 'Chandigarh': 333, 'Jodhpur': 2, 'Amritsar': 768,
    'Tipaimukh': 6, 'Guwahati': 822, 'Harchowal': 1, 'Mothan Wala': 2, 'Qadian': 7,
    'Baloda Bazar': 10
}

# 将字典封装到NumPy数组中
np_city_data = np.array(city_casualties)
print("封装在NumPy数组中的原始字典内容:")
print(np_city_data)
print("NumPy数组的类型:", type(np_city_data))
print("NumPy数组中元素的类型:", np_city_data.dtype)

输出显示np_city_data是一个dtype=object的NumPy数组,其内部包含了一个Python字典。此时,直接对np_city_data进行字典操作是不可行的,因为它是一个NumPy数组,而非直接的字典对象。

从NumPy数组中提取字典

要对NumPy数组中的字典进行操作,首先需要将该字典对象从数组中提取出来。当NumPy数组只包含一个元素(即我们的字典)时,可以使用np.array.item()方法来获取这个唯一的Python对象。

# 从NumPy数组中提取字典对象
actual_dict = np_city_data.item()
print("\n从NumPy数组中提取的字典对象:")
print(actual_dict)
print("提取后对象的类型:", type(actual_dict))

现在,actual_dict变量存储的就是原始的Python字典,我们可以对其执行标准的字典操作。

立即学习Python免费学习笔记(深入)”;

寻鲸AI
寻鲸AI

寻鲸AI是一款功能强大的人工智能写作工具,支持对话提问、内置多场景写作模板如写作辅助类、营销推广类等,更能一键写作各类策划方案。

下载

对字典进行值排序并重构

目标是根据字典的值(例如,城市的总伤亡人数)进行降序排序。Python提供了sorted()内置函数,结合dict.items()方法和lambda表达式,可以高效地完成这项任务。

  1. dict.items(): 此方法返回一个包含字典所有键值对的视图对象,每个键值对表示为一个元组(key, value)。
  2. sorted(): 这个函数可以对任何可迭代对象进行排序。
    • key=lambda item: item[1]:这是一个匿名函数,用于指定排序的依据。item代表items()返回的每个元组(key, value)。item[1]表示元组中的第二个元素,即字典的值。
    • reverse=True:这个参数表示进行降序排序。
  3. 字典推导式: 排序后的结果是一个元组列表。为了将其转换回字典并保持排序顺序(Python 3.7+版本字典保持插入顺序),可以使用字典推导式。

下面是完整的排序和重构过程:

# 1. 访问NumPy数组中的字典对象 (如果尚未提取)
actual_dict = np_city_data.item()

# 2. 对字典的键值对进行排序
# 按照字典的值(伤亡人数)进行降序排序
sorted_items = sorted(actual_dict.items(), key=lambda item: item[1], reverse=True)

# 3. 将排序后的键值对重新构建成字典
sorted_city_casualties = {key: value for key, value in sorted_items}

print("\n按伤亡人数降序排序后的城市字典:")
print(sorted_city_casualties)

# 如果需要,可以进一步提取前N个结果
top_5_cities = dict(list(sorted_city_casualties.items())[:5])
print("\n前5个伤亡人数最多的城市:")
print(top_5_cities)

通过以上步骤,我们成功地从NumPy数组中提取了字典,并对其进行了值降序排序,最终得到了一个按需求排列的城市伤亡数据字典。

注意事项

  • np.array.item()的适用性: item()方法主要用于获取只包含一个元素的NumPy数组中的Python对象。如果NumPy数组中包含多个元素(例如np.array([dict1, dict2, dict3])),则需要通过索引(如np_array[0])来访问特定的字典,或者遍历数组中的每个元素。
  • NumPy数组的用途: 通常情况下,NumPy数组设计用于存储同质的数值数据,以便进行高效的数值计算。将单个Python字典放入NumPy数组中,并不会带来NumPy的性能优势,反而增加了访问复杂性。如果只是需要存储和操作字典,直接使用Python字典即可。
  • 字典的有序性: 在Python 3.7及更高版本中,字典会保持元素的插入顺序。因此,通过字典推导式从排序后的键值对列表重建字典,其顺序将得到保留。
  • 排序键的灵活性: lambda表达式提供了极大的灵活性,你可以根据需要修改key参数来按键排序、按值排序,或基于更复杂的逻辑进行排序。例如,key=lambda item: item[0]将按键(城市名)进行排序。

总结

本教程详细阐述了如何在NumPy数组中处理内嵌字典的排序问题。核心步骤包括使用np.array.item()提取字典,然后利用Python内置的sorted()函数、dict.items()方法以及lambda表达式对字典进行值排序,并通过字典推导式重建有序字典。掌握这些技巧对于处理复杂数据结构和实现特定数据分析需求至关重要。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

778

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

685

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

769

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

739

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1445

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

571

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

580

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

751

2023.08.11

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

1

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 21.8万人学习

Django 教程
Django 教程

共28课时 | 3.5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号