第二周学习总结
常用数据结构之字典
Python程序中的字典跟现实生活中的字典很像,它以键值对(键和值的组合)的方式把数据组织到一起,我们可以通过键找到与之对应的值并进行操作。就像《新华字典》中,每个字(键)都有与它对应的解释(值)一样,每个字和它的解释合在一起就是字典中的一个条目,而字典中通常包含了很多个这样的条目。
dict1 = {
'麓': '山脚下', '路': '道,往来通行的地方;方面,地区:南~货,外~货;种类:他俩是一~人',
'蕗': '甘草的别名', '潞': '潞水,水名,即今山西省的浊漳河;潞江,水名,即云南省的怒江'
}
print(dict1)
过上面的代码,相信大家已经看出来了,用字典来保存一个人的信息远远优于使用列表或元组,因为我们可以用:
前面的键来表示条目的含义,而:
后面就是这个条目所对应的值。
字典的运用
import string
results = {letter: 0 for letter in string.ascii_lowercase}
# print(results)
content = input('请输入: ').lower()
for ch in content:
if ch in results:
results[ch] += 1
# print(results)
for key, value in results.items():
print(f'{key}: {value:>2d}次')
上面是输入一段英文,统计每个英文字母出现的次数
总结
Python程序中的字典跟现实生活中字典非常像,允许我们以键值对的形式保存数据,再通过键索引对应的值。这是一种非常有利于数据检索的数据类型,底层原理我们在后续的课程中再研究。再次提醒大家注意,字典中的键必须是不可变类型,字典中的值可以是任意类型。
json格式的字符串
json的含义
- 两个异构的系统之间交换数据最好的选择是交换纯文本(可以屏蔽系统和编程语言的差异)
-
-
纯文本应该是结构化或半结构化的纯文本(有一定的格式)
- XML —> eXtensible Markup Language —> 可扩展标记语言
- JSON —> JavaScript Object Notation —> 大多数网站和数据接口服务使用的数据格式
- YAML —> Yet Another Markup Language
- 如何将JSON格式的字符串转成Python程序中的字典?
—> json 模块 —> loads 函数
联网获取JSON格式的数据并解析出需要的内容
修改三方库的下载来源为国内的镜像网站 —> pip config set global.index-url https://pypi.doubanio.com/simple
三方库 —> requests —> pip install requests
协议 —> 通信双方需要遵守的会话的规则。
HTTP / HTTPS —> 通过URL访问网络资源的协议 —> Hyper-Text Transfer Protocol(超文本传输协议)
请求(request) - 响应(response)
import json
import requests
# 通过get函数发起一个请求得到一个响应
resp = requests.get(
url='http://api.tianapi.com/guonei/index',
params={'key': 'e8c5524dd2a365f20908ced735f8e480', 'num': 30}
)
# news_dict = json.loads(resp.text)
# 从响应中获取JSON数据直接转成字典
news_dict = resp.json()
news_list = news_dict['newslist']
for news in news_list:
print(news['title'])
print(news['url'])
周公解梦
import requests
word = input('请输入你梦到了什么: ')
resp = requests.get(
url='http://api.tianapi.com/txapi/dream/index',
params={
'key': 'e8c5524dd2a365f20908ced735f8e480',
'word': word,
'num': 10
}
)
news_list = resp.json()['newslist']
for news_dict in news_list:
print(news_dict['result'])