字典是另一種可變?nèi)萜髂P?,且可存儲任意類型對象?br> 字典中的元素由鍵和值兩部分構(gòu)成,冒號前面的稱為鍵,后面稱為值,合在一起叫鍵值對
字典的創(chuàng)建
字典的每個鍵值 key=>value 對用冒號 : 分割,每個對之間用逗號(,)分割,整個字典包括在花括號 {} 中
注意:dict 作為 Python 的關(guān)鍵字和內(nèi)置函數(shù),變量名不建議命名為 dict。
鍵必須是唯一的,但值則不必。
值可以取任何數(shù)據(jù)類型,但鍵必須是不可變的,如字符串,數(shù)字。
# 字面量語法
student = {
'id': 1001,
'name': '張三',
'sex': True,
'birthday': '1995-03'
}
# 構(gòu)造器函數(shù)
student2 = dict(id=1002, name='王大催', sex=True, birthday='1992-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}
# 生成器 (不是元組)
gen_obj = (i for i in range(1, 10))
print(next(gen_obj)) # 1
print(next(gen_obj)) # 2
print(next(gen_obj)) # 3
字典的使用
student = {
'id': 1001,
'name': '張三',
'sex': True,
'birthday': '1995-03'
}
# 字典的長度
print(len(student)) # 4
# 遍歷字典中的鍵(下面兩種寫法效果一樣)
# for key in student:
for key in student.keys():
print(key, student[key])
# values的方法遍歷字典中的值
for value in student.values():
print(value)
# items的方法遍歷字典中的鍵值對(二元組)
for x in student.items():
print(x) # ('id', 1001)
# 也可以把鍵和值分別取出
for key, value in student.items():
print(key, value) # id 1001
字典的運算
student = {
'id': 1001,
'name': '張三',
'sex': True,
'birthday': '1995-03'
}
# 字典的索引運算放在賦值運算符的左邊
# 如果索引對應的鍵是存在的,就更新它的值
student['name'] = '王美麗'
student['sex'] = False
# 如果字典中沒有對應的索引,就新增一組新的鍵值對
student['address'] = '四川成都'
print(student) # {'id': 1001, 'name': '王美麗', 'sex': False, 'birthday': '1995-03', 'address': '四川成都'}
print('name' in student) # True
print('age' in student) # False
print('address' in student) # True
print(student['name']) # 王美麗
print(student['birthday']) # 1995-03
# 如果要使用下標(索引)運算,那么必須要保證鍵一定存在,否則會報錯
print(student['age'])
# 如果不確定,可以先用if判斷
if 'age' in student:
print(student['age'])
# 使用get函數(shù)通過key獲取value時,如果key不存在,不會發(fā)生KeyError的錯誤
# 而是得到一個None(空值)或者是你指定的默認值
print(student.get('age')) # None
print(student.get('age', 20)) # 20
# 刪除鍵值對
del student['name'] # 沒有返回值
student.pop('name') # 會返回刪除的值
字典的相關(guān)操作
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}
# 刪除 --->鍵必須存在,如果不存在會產(chǎn)生KeyError
del dict1['B']
dict1.pop('K')
# 默認刪除最后一項
dict1.popitem()
# 清空所有
dict1.clear()
# 如果鍵在字典中,就返回字典中鍵對應的值,如果鍵不在字典中,就加入新的鍵值對(只新增不更新)
dict1.setdefault('C',200)
dict1.setdefault('name','1111')
聯(lián)網(wǎng)獲取JSON格式的數(shù)據(jù)并解析出需要的內(nèi)容
操作系統(tǒng):Windows, iOS, Android, macOS, Linux, Unix
編程語言:Python, Java, PHP, Go, C++
- 兩個異構(gòu)的系統(tǒng)之間交換數(shù)據(jù)最好的選擇是交換純文本(可以屏蔽系統(tǒng)和編程語言的差異)
- 純文本應該是結(jié)構(gòu)化或半結(jié)構(gòu)化的純文本(有一定的格式)
- XML ---> eXtensible Markup Language ---> 可擴展標記語言
- JSON ---> JavaScript Object Notation ---> 大多數(shù)網(wǎng)站和數(shù)據(jù)接口服務使用的數(shù)據(jù)格式
- YAML ---> Yet Another Markup Language
- 如何將JSON格式轉(zhuǎn)為Python程序中的字典?
- ---> json --->loads
- URL ---> Universal Resource Locator ---> 統(tǒng)一資源定位符
- 三方庫 ---> request ---> pip install requests
協(xié)議 ---> 通信雙方需要遵守的會話的規(guī)則
HTTP / HTTPS --->通過URL訪問網(wǎng)絡資源的協(xié)議
請求(request) - 響應(response)
import json
import requests
# 獲取網(wǎng)絡資源 ---> 兩種書寫方式
resp = requests.get('http://123?key=djdjdjd&num=2')
resp = requests.get(
url='',
params={'key':'','num':''}
)
# 兩種方法都可以把json格式的數(shù)據(jù)轉(zhuǎn)為Python中的字典
dict1 = json.load(resp.text)
dict2 = resp.json()