'''
字典,是“鍵值對”的無序可變序列,字典中的每個元素都是一對“鍵值對”,包含:“鍵對象”
和“值對象”,可以通過“鍵對象”實現快速獲取、刪除、更新對象的“值對象”。
字典中通過“鍵對象”找到相應的“值對象”,列表中通過“下標數字”找到對象,鍵
是任意的不可變數據,比如整數、浮點數、字符串、元組,但是列表、字典、集合這些對象可變
不能作為“鍵”,並且“鍵”不可重複。
字典的定義方式:a={"name":"sj","age":36,"job":"teacher"}
'''
#一、字典的創建
#1、通過{}大括號,dict()來創建
a={"name":"sj","age":36,"job":"teacher"}
print(a)
b=dict(name="sj",age=36,job="teacher") #利用元組
print(b)
c=dict([("name","age"),("sj","36")]) #利用列表
print(c)
d={} #空字典
e=dict() #空字典
#2、通過zip()創建字典對象
a=['name','age','job']
b=['sj','36','teacher']
c=dict(zip(a,b))
print(c)
#3、通過fromkeys創建值為空的字典
a=dict.fromkeys(['name','age','job']) #fromkeys 元素為列表
print(a)
#二、字典元素的訪問
a={"name":"sj","age":36,"job":"teacher"}
#1、通過[鍵]獲得值,若[鍵]不存在,則報錯
print(a["name"])
#print(a["sex"]),則報錯,因為在a字典中沒有“sex”這個鍵
#2、通過get()方法獲得值,推薦使用,優點是指定鍵不存在,返回None,頁可以指定鍵不存在時返回默認的對象
print(a.get("name"))
print(a.get("sex","男生"))
#3、列出所有鍵值對,items()
print(a.items())
#4、列出所有鍵,所有值 keys()、values()
print(a.keys())
print(a.values())
#5、len()返回鍵值對的個數
print(len(a))
#6、檢測一個鍵是否在字典中 in
print("name" in a) #返回布爾值
#三、字典元素的添加、修改、刪除
#1、新增鍵值對,如果鍵已經存在,則覆蓋之前的鍵值對,如不存在,則新增
a={"name":"sj","age":36,"job":"teacher"}
a["address"]="徐州" #新增一個鍵值對
print(a)
a["age"]=18 #覆蓋之前的鍵值對
print(a)
#2、使用update(),講新字典中所有鍵值對全部添加到舊字典對象上,如鍵有重複直接覆蓋
a={"name":"sj","age":36,"job":"teacher"}
b={"sex":"男","age":"18"}
a.update(b)
print(a)
#3、字典元素的刪除 del(指定鍵值對)和clear()(全部刪除)、pop()刪除指定鍵值對,並將刪除的值賦給新對象
a={"name":"sj","age":36,"job":"teacher"}
del(a["name"]) #刪除鍵值對name:sj
print(a)
a.clear()
print(a)
a={"name":"sj","age":36,"job":"teacher"}
b=a.pop('age')
print(a)
print(b)
#4、popitem(),隨機刪除和返回該鍵值對
'''
字典是無序可變序列,因此沒有第一和最後一個元素的概念,popitem()彈出隨機的項,若想
一個一個的移除並處理,這個方法非常有效,因為不用首先獲得鍵的列表
'''
a={"name":"sj","age":36,"job":"teacher"}
a.popitem() #隨機刪除一個鍵值對
print(a)
#四、序列解包
'''
序列解包可以用於元組、列表、字典,可以讓我們方便的對多個變量賦值
序列解包用於字典時,默認是對鍵進行操作,如果需要對鍵值對操作,則需要使用items()
如果需要對值操作,則需要使用values()
'''
a,b,c=1,2,3 #數字解包
(d,e,f)=(4,5,6) #元組解包
[g,h,i]=[7,8,9] #列表解包
print(a)
print(b)
print(c)
print(d)
print(e)
print(f)
print(g)
print(h)
print(i)
a={"name":"sj","age":36,"job":"teacher"}
x,y,z=a
print(x) #x為name,默認對鍵的操作
print(y) #y為age
print(z) #z為job
x,y,z=a.items()
print(x) #對鍵值對操作
print(y)
print(z)
x,y,z=a.values()
print(x) #對值對操作
print(y)
print(z)
#五、複雜表格數據存儲,並實現訪問
'''
姓名 年齡 薪資 城市
張三 25 10000 徐州
李四 27 12000 上海
王五 30 15000 深圳
'''
r1={"name":"張三","age":"25","salary":"10000","city":"徐州"}
r2={"name":"李四","age":"27","salary":"12000","city":"上海"}
r3={"name":"王五","age":"30","salary":"15000","city":"深圳"}
tb=[r1,r2,r3] #製表
print(tb)
print(tb[1].get("salary"))#獲得第二行salary
for x in range(len(tb)): #for語句結束要帶冒號
print(tb[x].get("salary"))#獲得所有人的slary
for x in range(len(tb)):
print(tb[x].get("name"),tb[x].get("age"),tb[x].get("salary"),tb[x].get("city"),)