当前位置: 首页 > news >正文

关于“Python”的核心知识点整理大全51

目录

 17.2.2 添加自定义工具提示

bar_descriptions.py

17.2.3 根据数据绘图

python_repos.py

17.2.4 在图表中添加可单击的链接

python_repos.py

17.3 Hacker News API

hn_submissions.py

17.4 小结

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!


 17.2.2 添加自定义工具提示

在Pygal中,将鼠标指向条形将显示它表示的信息,这通常称为工具提示。在这个示例中, 当前显示的是项目获得了多少个星。下面来创建一个自定义工具提示,以同时显示项目的描述。 来看一个简单的示例,它可视化前三个项目,并给每个项目对应的条形都指定自定义标签。 为此,我们向add()传递一个字典列表,而不是值列表:

bar_descriptions.py
import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS
my_style = LS('#333366', base_style=LCS)
chart = pygal.Bar(style=my_style, x_label_rotation=45, show_legend=False)
chart.title = 'Python Projects'
chart.x_labels = ['httpie', 'django', 'flask']
1 plot_dicts = [
2 {'value': 16101, 'label': 'Description of httpie.'},
{'value': 15028, 'label': 'Description of django.'},
{'value': 14798, 'label': 'Description of flask.'},
]
3 chart.add('', plot_dicts)
chart.render_to_file('bar_descriptions.svg')

在1处,我们定义了一个名为plot_dicts的列表,其中包含三个字典,分别针对项目HTTPie、 Django和Flask。每个字典都包含两个键:'value'和'label'。Pygal根据与键'value'相关联的数 字来确定条形的高度,并使用与'label'相关联的字符串给条形创建工具提示。例如,处的第 一个字典将创建一个条形,用于表示一个获得了16 101颗星、工具提示为Description of httpie的 项目。 方法add()接受一个字符串和一个列表。这里调用add()时,我们传入了一个由表示条形的字 典组成的列表(plot_dicts)(见3)。图17-3显示了一个工具提示:除默认工具提示(获得的星 数)外,Pygal还显示了我们传入的自定义提示。

17.2.3 根据数据绘图

为根据数据绘图,我们将自动生成plot_dicts,其中包含API调用返回的30个项目的信息。 完成这种工作的代码如下:

python_repos.py
--snip--
# 研究有关仓库的信息
repo_dicts = response_dict['items']
print("Number of items:", len(repo_dicts))
1 names, plot_dicts = [], []
for repo_dict in repo_dicts:names.append(repo_dict['name'])
2 plot_dict = {'value': repo_dict['stargazers_count'],'label': repo_dict['description'],}
3 plot_dicts.append(plot_dict)
# 可视化
my_style = LS('#333366', base_style=LCS)
--snip--
4 chart.add('', plot_dicts)
chart.render_to_file('python_repos.svg')

在1处,我们创建了两个空列表names和plot_dicts。为生成x轴上的标签,我们依然需要列 表names。

在循环内部,对于每个项目,我们都创建了字典plot_dict(见2)。在这个字典中,我们使 用键'value'存储了星数,并使用键'label'存储了项目描述。接下来,我们将字典plot_dict附加 到plot_dicts末尾(见3)。在4处,我们将列表plot_dicts传递给了add()。图17-4显示了生成的 图表。

17.2.4 在图表中添加可单击的链接

Pygal还允许你将图表中的每个条形用作网站的链接。为此,只需添加一行代码,在为每个 项目创建的字典中,添加一个键为'xlink'的键—值对:

python_repos.py
--snip--
names, plot_dicts = [], []
for repo_dict in repo_dicts:names.append(repo_dict['name'])plot_dict = {'value': repo_dict['stargazers_count'],'label': repo_dict['description'],'xlink': repo_dict['html_url'],}plot_dicts.append(plot_dict)
--snip-- 

Pygal根据与键'xlink'相关联的URL将每个条形都转换为活跃的链接。单击图表中的任何条 形时,都将在浏览器中打开一个新的标签页,并在其中显示相应项目的GitHub页面。至此,你对 API获取的数据进行了可视化,它是交互性的,包含丰富的信息!

17.3 Hacker News API

为探索如何使用其他网站的API调用,我们来看看Hacker News(http://news.ycombinator. com/)。在Hacker News网站,用户分享编程和技术方面的文章,并就这些文章展开积极的讨论。Hacker News的API让你能够访问有关该网站所有文章和评论的信息,且不要求你通过注册获得密钥。 下面的调用返回本书编写时最热门的文章的信息:

https://hacker-news.firebaseio.com/v0/item/9884165.json

响应是一个字典,包含ID为9884165的文章的信息:

{
1 'url': 'http://www.bbc.co.uk/news/science-environment-33524589',
'type': 'story',
2 'title': 'New Horizons: Nasa spacecraft speeds past Pluto',
3 'descendants': 141,
'score': 230,
'time': 1436875181,
'text': '',
'by': 'nns',
'id': 9884165,
4 'kids': [9884723, 9885099, 9884789, 9885604, 9885844]
} 

这个字典包含很多键,如'url'(见1)和'title'(见2)。与键'descendants'相关联的值是 文章被评论的次数(见3)。与键'kids'相关联的值包含对文章所做的所有评论的ID(见4)。每 个评论自己也可能有kid,因此文章的后代(descendant)数量可能比其kid数量多。 下面来执行一个API调用,返回Hacker News上当前热门文章的ID,再查看每篇排名靠前的文章:

hn_submissions.py
import requests
from operator import itemgetter
# 执行API调用并存储响应
1 url = 'https://hacker-news.firebaseio.com/v0/topstories.json'
r = requests.get(url)
print("Status code:", r.status_code)
# 处理有关每篇文章的信息
2 submission_ids = r.json()
3 submission_dicts = []
for submission_id in submission_ids[:30]:# 对于每篇文章,都执行一个API调用
4 url = ('https://hacker-news.firebaseio.com/v0/item/' +str(submission_id) + '.json')submission_r = requests.get(url)print(submission_r.status_code)response_dict = submission_r.json()5 submission_dict = {'title': response_dict['title'],'link': 'http://news.ycombinator.com/item?id=' + str(submission_id),
'comments': response_dict.get('descendants', 0)}submission_dicts.append(submission_dict)7 submission_dicts = sorted(submission_dicts, key=itemgetter('comments'),reverse=True)
8 for submission_dict in submission_dicts:print("\nTitle:", submission_dict['title'])print("Discussion link:", submission_dict['link'])print("Comments:", submission_dict['comments']) 

首先,我们执行了一个API调用,并打印了响应的状态(见1)。这个API调用返回一个列表, 其中包含Hacker News上当前最热门的500篇文章的ID。接下来,我们将响应文本转换为一个 Python列表(见2),并将其存储在submission_ids中。我们将使用这些ID来创建一系列字典,其 中每个字典都存储了一篇文章的信息。

在3处,我们创建了一个名为submission_dicts的空列表,用于存储前面所说的字典。接下 来,我们遍历前30篇文章的ID。对于每篇文章,我们都执行一个API调用,其中的URL包含 submission_id的当前值(见4)。我们打印每次请求的状态,以便知道请求是否成功了。

在3处,我们为当前处理的文章创建一个字典,并在其中存储文章的标题以及到其讨论页面 的链接。在4处,我们在这个字典中存储了评论数。如果文章还没有评论,响应字典中将没有键 'descendants'。不确定某个键是否包含在字典中时,可使用方法dict.get(),它在指定的键存在 时返回与之相关联的值,并在指定的键不存在时返回你指定的值(这里是0)。最后,我们将 submission_dict附加到submission_dicts末尾。

Hacker News上的文章是根据总体得分排名的,而总体得分取决于很多因素,其中包含被推 荐的次数、评论数以及发表的时间。我们要根据评论数对字典列表submission_dicts进行排序, 为此,使用了模块operator中的函数itemgetter()(见7)。我们向这个函数传递了键'comments', 因此它将从这个列表的每个字典中提取与键'comments'相关联的值。这样,函数sorted()将根据 这种值对列表进行排序。我们将列表按降序排列,即评论最多的文章位于最前面。

对列表排序后,我们遍历这个列表(见8),对于每篇热门文章,都打印其三项信息:标题、 到讨论页面的链接以及文章现有的评论数:

Status code: 200
200
200
200
--snip--
Title: Firefox deactivates Flash by default
Discussion link: http://news.ycombinator.com/item?id=9883246
Comments: 231
Title: New Horizons: Nasa spacecraft speeds past Pluto
Discussion link: http://news.ycombinator.com/item?id=9884165
Comments: 142
Title: Iran Nuclear Deal Is Reached With World Powers
Discussion link: http://news.ycombinator.com/item?id=9884005
Comments: 141
Title: Match Group Buys PlentyOfFish for $575M
Discussion link: http://news.ycombinator.com/item?id=9884417
Comments: 75
Title: Our Nexus 4 devices are about to explode
Discussion link: http://news.ycombinator.com/item?id=9885625
Comments: 14
--snip--

使用任何API来访问和分析信息时,流程都与此类似。有了这些数据后,你就可以进行可视 化,指出最近哪些文章引发了最激烈的讨论。

17.4 小结

在本章中,你学习了:如何使用API来编写独立的程序,它们自动采集所需的数据并对其进 行可视化;使用GitHub API来探索GitHub上星级最高的Python项目,还大致地了解了Hacker News API;如何使用requests包来自动执行GitHub API调用,以及如何处理调用的结果。我们还简要地 介绍了一些Pygal设置,使用它们可进一步定制生成的图表的外观。 在本书的最后一个项目中,我们将使用Django来创建一个Web应用程序。


关于“Python”的核心知识点整理大全37-CSDN博客

关于“Python”的核心知识点整理大全25-CSDN博客

关于“Python”的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!

相关文章:

关于“Python”的核心知识点整理大全51

目录 17.2.2 添加自定义工具提示 bar_descriptions.py 17.2.3 根据数据绘图 python_repos.py 17.2.4 在图表中添加可单击的链接 python_repos.py 17.3 Hacker News API hn_submissions.py 17.4 小结 往期快速传送门👆(在文章最后)&a…...

Termius for Mac/Win:一站式终端模拟器、SSH 和 SFTP 客户端软件的卓越选择

随着远程工作和云技术的普及,对于高效安全的远程访问和管理服务器变得至关重要。Termius,一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件,正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案,允许用户通过单一平…...

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间 一、软件程序问答 如下图,软件以 佳易王vr体验馆计时计费软件V17.9为例说明 1、软件如何计时间? 点击相应编号的开始计时按钮即可 2、遇到停电再打开软件时间可以恢复吗&…...

HTML---JavaScript基础

文章目录 目录 文章目录 本章目标 一.JavaScript基础 概述 特点 JavaScript 基本机构 语法 网页中引用JavaScript的方式 二. JavaScript核心语法 变量 ​编辑 数据类型 数组 练习 本章目标 掌握JavaScript的组成掌握JavaScript的基本语法会定义和使用函数会使用工具进行…...

2023年03月17日_微软和谷歌办公AI的感慨

2023年3月17日 最近这个科技圈的消息 有点爆炸的让人应接不暇了 各种大公司简直就是神仙打架 你从来没有见过这么密集的 这么高频的产品发布 昨天微软是发布了Office 365 Copilot 在里边提供了大量的AI的功能 然后谷歌呢也发布了这个Google Workspace AI 也是跟365 Cop…...

2023年新一代开发者工具 Vue ,正式开源!

以下文章来源于前端充电宝 ,作者CUGGZ 近日,Vue 新一代开发者工具(DevTools)正式开源!Vue DevTools 是一个旨在增强 Vue 开发人员体验的工具,它提供了一些功能来帮助开发者更好地了解 Vue 应用。下面就来看…...

springboot(ssm校园组团平台 高校组团系统 Java系统

springboot(ssm校园组团平台 高校组团系统 Java系统 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数据库…...

QT 利用开源7z 实现解压各种压缩包,包括进度条和文件名的显示(zip,7z,rar,iso等50多种格式)

想做一个winRAR一样的解压软件吗?很简单,利用开源的7z库就能实现。我看网上其他人说的方法不敢苟同,误人子弟。以前自己在项目中使用过7z,这次又有需要,就想记录下来。如果你研究过如何用7z的话,一定知道7z的每一个GUID都代表了一种格式,50多种GUID也就有50多个格式,最…...

androidStudio 没有新建flutter工程的入口?

装了flutter dart 插件 执行了 flutter doctor 也执行了 flutter doctor --android-license 最后重启了 androidStudio 还是没发现在哪新建flutter项目工程 原来 plugins 下的 Android APK Support没有勾选...

微信小程序开发系列-03全局配置中的“window”和“tabBar”

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》《微信小程序开发系列-02注册小程序》《微信小程序开发系列-03全局配置中的“window”和“tabBar”》《微信小程序开发系列-04获取用户图像和昵称》《微信小程序开发系列-05登录小程序》《微信小程序…...

基于CNN神经网络的手写字符识别实验报告

作业要求 具体实验内容根据实际情况自拟,可以是传统的BP神经网络,Hopfield神经网络,也可以是深度学习相关内容。 数据集自选,可以是自建数据集,或MNIST,CIFAR10等公开数据集。 实验报告内容包括但不限于&am…...

Ubuntu 系统中安装和配置 clash

本博客参考 ubuntu下怎么安装clash-ghc? 和 对 clash 进行下载和配置,如有需要可自行点击链接查看原文。 下载 clash 打开终端(进入到 主目录/用户目录 ),通过命令下载 clash 文件并将其中命名为 clash: # 下载 cl…...

DragonEnglish:COCA20000+单词+释义

去年的时候接触到了 COCA20000 单词,对这种给单词特定顺序的方式蛮感兴趣的。因为我当时接触的版本只有单词或者单词释义的版本,所以我直接通过各种方式给它搭配了音标例句发音,然后每100个切割成1份,分成了 202 个文件来学习&…...

『亚马逊云科技产品测评』活动征文|云服务器如何快速搭建个人博客(图文详解)

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 文章目录 引言一、前期准备步骤1.1 准备一个亚马逊 EC2 服务器1.2 进入控…...

QT上位机开发(乘法计算小软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面一篇文章,我们学习了怎么创建qt的第一个工程,怎么用designer给qt修改界面。虽然我们到目前为止,还没有编写…...

【Matlab】BP 神经网络时序预测算法

资源下载: https://download.csdn.net/download/vvoennvv/88681507 一,概述 BP 神经网络是一种常见的人工神经网络,也是一种有监督学习的神经网络。其全称为“Back Propagation”,即反向传播算法。BP 神经网络主要由输入层、隐藏层…...

GPT在企业自动化方面的应用

GPT和类似的自然语言处理技术在企业自动化方面有许多应用。以下是一些主要的应用领域: 自动化客户支持: 使用GPT可以构建自动化的客户支持系统,能够理解和生成自然语言文本,回答常见问题,解决用户的疑问和问题。 自动…...

STM32——通用计时器

通用计时器框图 1.时钟源 1)内部时钟(CK_INT) 2)外部时钟模式 1:外部输入引脚(TIx),x1,2(即只能来自于通道 1 或者通道 2) 3)外部时钟模式 2:外部触发输入(ETR) 4&#…...

【HarmonyOS】鸿蒙开发简介与项目基础配置演示

从今天开始,博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”,对于刚接触这项技术的小伙伴在学习鸿蒙开发之前,有必要先了解一下鸿蒙,从你的角度来讲,你认为什么是鸿蒙呢?它出现的意义又是…...

[MySQL] MySQL数据库创建存储过程

一、mysql存储过程的相关知识 1.1 存储过程的概念 存储过程是一组为了完成特定功能的SQL语句集合。类似于于其他编程语言中的函数,定义一个函数方法,可以随时起到传参调用的功能。 存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

云原生安全实战:API网关Kong的鉴权与限流详解

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键&#xff…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

向量几何的二元性:叉乘模长与内积投影的深层联系

在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...