字典的定义及创建
字典以键值对(键和值的组合)的方式把数据组织到一起,我们可以通过键找到与之对应的值并进行操作 。
创建字典的三种方式:
# 字面量语法
student1={
'id':1001,
'name':'骆昊',
'sex':'True',
'birthday':'1980-11',
'contacts':{
'QQ':'4625900568',
'tel':'135673542'
}
}
print(student1) # {'id': 1001, 'name': '骆昊', 'sex': 'True', 'birthday': '1980-11', 'contacts': {'QQ': '4625900568', 'tel': '135673542'}}
print(type(student1)) # <class 'dict'>
print(len(student1)) # 5
print(student1['name']) # 骆昊
print(student1['contacts']['tel']) # 135673542
# 构造器函数
student2=dict(id=1001,name='王大锤',sex=True,birthday='1980-11')
print(student2) # {'id': 1001, 'name': '王大锤', 'sex': True, 'birthday': '1980-11'}
# 生成式(推导式)语法
dict1={i:i**2 for i in range(1,10)}
print(dict1) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
遍历字典
# 遍历字典中的健
# for key in student1:
for key in student1.keys():
print(key) # id name sex birthday contacts
# 遍历字典中的值
for value in student1.values():
print(value) # 1001 骆昊 True 1980-11 {'QQ': '4625900568', 'tel': '135673542'}
# 遍历字典中的健值对---> (key, value)
for key,value in student1.items():
print(key,value)
字典的运算
需要特别提醒注意的是,字典中的键必须是不可变类型,例如整数(int )、浮点数(float )、字符串(str )、元组(tuple )等类型的值;显然,列表(list )和集合(set )是不能作为字典中的键的,当然字典类型本身也不能再作为字典中的键,因为字典也是可变类型,但是字典可以作为字典中的值。
student=dict(id=1001,name='王大锤',sex=True,birthday='1990-11')
# 成员运算
print('name' in student) # True
# 字典的索引运算放在赋值运算的左边,如果索引对应的健是存在的,就更新它的值
student['name']='汪美丽'
print(student) # {'id': 1001, 'name': '汪美丽', 'sex': True, 'birthday': '1990-11'}
# 如果字典中没有对应的索引,就增加一组新的"键值对"
student['address']='四川成都'
print(student) # {'id': 1001, 'name': '汪美丽', 'sex': True, 'birthday': '1990-11', 'address': '四川成都'}
# 通过id修将student字典中对应的值修改为2110
if 'id' in student:
student['id'] = 2110
# 如果要使用下标(索引)运算,那么必须要保证健一定存在,否则将会引发KeyError异常。
if 'birthday' in student:
print(student['birthday']) # 1990-11
# 对字典的键进行循环并通索引运算获取键对应的值
for key in student:
print(f'{key}: {student[key]}')
字典的相关操作
# 使用get函数通过key获取value时,如果key不存在,不会发生KeyError错误
# 而是得到一个None(空值)或者是你指定的默认值
print(student.get('age')) # None
print(student.get('age',20)) # 20
print(student.get('name','无名氏')) #汪美丽(因有name且是'汪美丽',若无'name'则为'无名氏')
dict1={'a':'100','b':200,'c':300}
dict2={'d':'400','e':500,'a':600}
# 更新(元素的合并或更新)
dict1.update(dict2)
print(dict1) # {'a': 600, 'b': 200, 'c': 300, 'd': '400', 'e': 500}
# 删除 ---> 键必须存在,如果不存在会产生KeyError
# 指定删除
del dict1['b']
dict1.pop('b')
# 删除最后一个键值对
dict1.popitem()
print(dict1) # {'a': 600, 'c': 300, 'd': '400'}
# setdefault可以输出字典中的键对应的值或向字典中存入新的键值对
print(dict1.setdefault('c')) # 300
print(dict1.setdefault('k', 10000)) # 10000
print(dict1) # {'a': 600, 'c': 300, 'd': '400', 'k': 10000}
# 清空所有
dict1.clear()
print(dict1) # {}
# 字典中健与值互换
dict1 = {'A': 1, 'B': 2, 'C': 3, 'D': 4}
dict2 = dict(zip(dict1.values(), dict1.keys()))
print(dict1) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
print(dict2) # {1: 'A', 2: 'B', 3: 'C', 4: 'D'}
SON格式的数据------>字典
import json
data = """{
"code": 200,
"msg": "success",
"newslist": [
{
"id": "98c93c967323b07b371a6326e0b2f1dd",
"ctime": "2021-07-30 00:00",
"title": "包揽金银!朱雪莹、刘灵玲分获女子蹦床冠亚军",
"description": "",
"source": "中华国内",
"picUrl": "https://img1.utuku.imgcdc.com/300x200/news/20210730/288d5bcd-9bfd-4ddf-b642-603541d10dd7.png",
"url": "https://news.china.com/domestic/945/20210730/39818998.html"
},
{
"id": "a214ab1bd8cc7b91a12c699897e7f646",
"ctime": "2021-07-30 00:00",
"title": "创造历史!中国队女子八人单桨有舵手决赛摘铜",
"description": "",
"source": "中华国内",
"picUrl": "https://img1.utuku.imgcdc.com/300x200/news/20210730/f9580655-cb78-4a95-9064-e0a2da780c40.jpg",
"url": "https://news.china.com/domestic/945/20210730/39817521.html"
}
]
}"""
# loads函数可以将JSON格式的数据转成Python中字典
news_dict = json.loads(data)
news_list = news_dict['newslist']
for news in news_list:
print(news['title'])
print(news['url'])
联网获取JSON格式的数据并解析出需要的内容,以天行数据的天气板块为例
import json
import requests
resp=requests.get(
url='http://api.tianapi.com/txapi/tianqi/index',
params={'key':'74d242b358750037789acc60bc5a3db1','city':'成都市'}
)
# print(resp.text)
weather_dict=resp.json()
weather_list=weather_dict['newslist']
print(weather_list)
for weathers in weather_list:
print(weathers['area'])
print(weathers['date'])
print(weathers['weather'])
|