Python容器型數(shù)據(jù)類型 - 字典

字典是另一種可變?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++

  1. 兩個異構(gòu)的系統(tǒng)之間交換數(shù)據(jù)最好的選擇是交換純文本(可以屏蔽系統(tǒng)和編程語言的差異)
  2. 純文本應該是結(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
  1. 如何將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()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容