python 字典

'''

字典,是“键值对”的无序可变序列,字典中的每个元素都是一对“键值对”,包含:“键对象”

和“值对象”,可以通过“键对象”实现快速获取、删除、更新对象的“值对象”。

字典中通过“键对象”找到相应的“值对象”,列表中通过“下标数字”找到对象,键

是任意的不可变数据,比如整数、浮点数、字符串、元组,但是列表、字典、集合这些对象可变

不能作为“键”,并且“键”不可重复。

字典的定义方式: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"),)


分享到:


相關文章: