python基础 - 10 容器类型 - 字典

字典: dict { }

字典存储是一个一个的键值对(key:value); 字典也是无序的

1.定义字典

a.字典的每个元素都是键值对, 键:值

b.键可以是基本的数据类型,但是不能是容器类型.最好建议键用字符串(偶尔可以用整型)

dict1 = {'name':'hanbo', 'age':20, 1:2, True:'错', [1, 2]:'a', (3, 4):'c'}
print(dict1)     #报错

c.值可以是任何类型

dict2 = {'a':[1, 2],'b':(1, 2),'c':{1, 2}}
print(dict2)

d.字典中键是唯一的

dict3 = {'name':'hanbo', 'age':20, 'name':'nihao'}
print(dict3)

2.使用字典的元素的值(查找)

a.通过键去取值

dict4 = {'name':'hanbo', 'age':20}
print(dict4['name'])
print(dict4['QQ'])   # 如果字典的键值对中没有对应的键,通过键去直接去取元素的值,结果会报错

b.通过调用get(key)也可以拿到键对应的值.当key不存在的时候,会返回None,而不会报错

dict5 = {'name':'hanbo', 'age':20}
age = dict5.get('age')
print(age)

总结:在确定key值一定存在的时候直接用字典名['key']的方式来取值
    如果不确定key值在字典中,则用字典名.get('key')的方式来取值

3.修改字典中元素的值

a.通过字典加[]的方式去获取对应的值,然后重新赋值..用get方法是不行的.

dict6 = {'name':'hanbo', 'age':20}
dict6['name'] = 'wangyan'
print(dict6)

b.如果key不存在,就是给字典添加键值对

dict7 = {'name':'hanbo', 'age':20}
dict7['sex'] = 'boy'
print(dict7)

c.setdefault(key, value): 查找字典中是否有key对应的键值对,如果字典中没有这个key值就会添加到字典中.

dict8 = {'name':'hanbo', 'age':20}
print(dict8.setdefault('like', '打球'))
print(dict8)

d.字典1 update 字典2: 用字典2中的内容去更新字典1的内容.有键则更新,无键则添加.

dict10 = {'a':1, 'b':2}
dict10.update({'c':10,'b':3})
print(dict10)

练习:设计字典保存人的信息(名字,年龄,性别,狗(名字,颜色,年龄),各科的成绩)

dict9 = {
    'name':'hanbo', 
    'age':'20', 
    'sex':'boy', 
    'dog':{'name':'taidi', 'color':'yellow', 'age':'2'}, 
    'grade':{'math':90, 'chinese':88}
}
print(dict9)
# 如果想拿到狗的颜色
print(dict9['dog']['color'])

4.字典的删除

a. del 字典名[key]

dict11 = {'a':1, 'b':2}
del dict11['a']
print(dict11)
# 在删除前判断键值是否存在.
if 'a' in dict11:   #用in \ not in去判断键值对是否存在,避免报错
    print('存在')
else:
    print('不存在')

b. 字典名.pop(key) : 取出对应的键值对,并且返回key对应的value, 删除前同样需要判断

dict12 = {'a':1, 'b':2, 'c':3}
dict12.pop('a')
print(dict12)

5.字典的遍历

a. 遍历用key去取字典中所有的key(建议用)

dict12 = {'a':1, 'b':2, 'c':3, 'd':[8, 9, 10]}
for key in dict12:
    print(key)           #取键
    print(dict12[key])   #取值

b. items()函数将字典转换成列表进行遍历拿到键和值(不建议用,消耗内存)

dict12 = {'a':1, 'b':2, 'c':3, 'd':[8, 9, 10]}
print(dict12.items())
for key,value in dict12.items():
    print(key,value)

c. keys() 函数可以拿到字典所有的键

dict12 = {'a':1, 'b':2, 'c':3, 'd':[8, 9, 10]}
print(list(dict12.keys()))

d. values()函数可以拿到字典索引的值

dict12 = {'a':1, 'b':2, 'c':3, 'd':[8, 9, 10]}
print(list(dict12.values()))

猜你喜欢

转载自blog.csdn.net/hanbo6/article/details/80326067
今日推荐