Python---第10天---字典

Python—第10天—字典

字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中。

元素由键和值两部分构成,冒号前面的称为,冒号后面为,合在一起叫键值对。

一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

创建字典

student = {
    'id': 1234,
    'name': '张三',
    'sex': '男',
    'weight': '100',
    'birthday': '2021-7',
    'address': '四川成都',
    'favorites': ['学习', '游戏'],
    'contacts': {
        'QQ': '123456',
        'tel': '987654321',
        'email': '123@456.com'
    }
}

print(student['name'])
print(student['birthday'])
print(student['contacts']['tel'])
for fav in student['favorites']:
    print(fav)
字面量语法
student1 = {
    'id': 101,
    'name': 'abc',
    'sex': True
}
print(student1)
print(len(student1))
# for key in student1:
for key in student1.keys():
    print(key, student1[key])
print('-' * 20)

print(student1.values())
print('-' * 20)

for key, value in student1.items():
    print(key, value)
print('-' * 20)
构造器函数
student2 = dict(id=102, name='zxc', sex=True)
print(student2)
生成式(推导式)
dict1 = {i: i ** 2 for i in range(1, 10)}
print(dict1)

字典的运算

student = dict(id=102, name='zxc', sex=True, birthday='1998')
# 字典的索引运算放在赋值运算符的左边
# 如果索引对应的键是存在的,就更新它的值
student['name'] = 'asd'
student['sex'] = False
# 如果字典中没有对应的索引,就增加一组新的"键值对"
student['address'] = '四川成都'
print(student)

#成员运算
print('name' in student)
print('age' in student)
print('address' in student)

# 使用get函数通过key获取value时,如果key不存在,不会发生keyError错误
# 而是得到一份None(空值),或者是你指定的默认值
print(student.get('age'))
print(student.get('age', 20))
print(student.get('name', '无名氏'))
print(student['id'])

# 删除键值对
# del student['name']
print(student.pop('name'))
print(student.get('name', '无名氏'))

# 如果要使用下标(索引)运算,那么必须保证键一定存在
if 'birthday' in student:
    print(student['birthday'])

get() 方法其实就是根据 key 来获取 value

字典中的键必须是不可变类型,例如整数(int)、浮点数(float)、字符串(str)、元组(tuple)等类型的值;显然,列表(list)和集合(set)是不能作为字典中的键的,当然字典类型本身也不能再作为字典中的键,因为字典也是可变类型,但是字典可以作为字典中的值。

字典的相关操作

dict1 = {'A': 100, 'B': 200, 'C': 300}
dict2 = {'D': 400, 'E': 500, 'A': 600}

# 更新(元素的合并或更新)
dict1.update(dict2)
print(dict1)

# 删除
del dict1['B']
dict1.pop('A')
dict1.popitem()
print(dict1)

print(dict1.setdefault('C', 800))
print(dict1.setdefault('K', 1000))
print(dict1)

# 清空
dict1.clear()
print(dict1)

练习1:

输入一段英文,统计每个英文字母出现的次数。

import string

results = {letter: 0 for letter in string.ascii_lowercase}
content = input('请输入: ').lower()
for ch in content:
    if ch in results:
        results[ch] += 1
for key, value in results.items():
    print(f'{key}: {value:>2d}次')

练习2:

字典中保存了股票信息,完成下面的操作

  1. 找出股票价格大于100元的股票并创建一个新的字典
  2. 找出价格最高和最低的股票对应的股票代码
  3. 按照股票价格从高到低给股票代码排序
stocks = {
    'AAPL': 191.88,
    'GOOG': 1186.96,
    'IBM': 149.24,
    'ORCL': 48.44,
    'ACN': 166.89,
    'FB': 208.09,
    'SYMC': 21.29
}
stock1 = {key: value for key, value in stocks.items() if value > 100}
print(stock1)

print(max(zip(stocks.values(), stocks.keys()))[1])
print(min(zip(stocks.values(), stocks.keys()))[1])

print(max(stocks, key=stocks.get))
print(min(stocks, key=stocks.get))

print(sorted(stocks, key=stocks.get, reverse=True))

JSON格式的字符串

操作系统:Windows、iOS、Android、macOS、Linux、Unix
编程语言:Python、Java、PHP、Go、C++

  • 两个异构的系统之间交换数据最好的选择是交换纯文本(可以屏蔽系统和编程语言的差异)
  • 纯文本应该是结构化或半结构化的纯文本(有一定的格式)

XML —> extensible Markup Language —> 可扩展标记语言
JSON —> JavaScript Object Notation —> 大多数网站和数据接口服务使用的数据格式
YAML —> Yet Another Markup Language

  • 如何将JSON格式的字符串转成Python程序中的字典?
    —> json 模块 —> loads 函数

URL —> Universal Resource Locator —> 统一资源定位符

loads函数可以将JSON格式的数据转成Python中字典

data = """{
  "code": 200,
  "msg": "success",
  "newslist": [
  				 ]
}"""
news_dict = json.loads(data)

安装requests

进入终端Terminal,输入pip config set global.index-urlhttps://pypi.doubanio.com/simple(换成国内豆瓣下载

速度快),再次输入pip install requests,就能安装好requests三方库。

使用requests

联网获取JSON格式的数据并解析出需要的内容

三方库 —> requests —> pip install requests

协议 —> 通信双方需要遵守的会话的规则

HTTP / HTTPS —> 通过URL访问网络资源的协议 —> Hyper-Text Transfer Protocol (超文本传输协议)

请求(request) —— 响应(response)

选择[天行数据TianAPI - 开发者API数据平台],里面有很多免费接口选择,将请求地址和参数值复制

方法一:

requests.get('http://api.tianapi.com/txapi/pet/index?'
                    'key=参数值9&num=访问次数&type=0')           

方法二:

url='网址',
params={
    'key': '参数值',
    'num': 访问次数
}

点击测试请求,查看想要获取的内容,记住相应的键

import requests

resp = requests.get('网址?'
                    'key=参数值&num=获取次数&type=类型')

print(resp)

# new_dict = json.loads(resp.text)   # 将json格式转化为字典
new_dict = resp.json()   # 将json格式转化为字典
new_list = new_dict['newslist']  #获取newslist字典
for news in new_list:    # 将newslist字典的元素遍历
# 打印相应的元素
    print(news['name'])   
    print(news['life'])
    print(news['url'])
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值