字典 (dict)

2018-07-23  本文已影响0人  文化银儿

1.声明一个字典

(1)字典也是一种容器类型的数据类型(序列),存的数据是以键值对的形式出现,字典中的元素全部都是键值对
(2)字典是可变的(增删改),但是无序的(不能使用下标)
(3)键值对:键:值(key:value)
(4)键值对中key是形式,值才是真正要存的内容
(5) 键值对的键是唯一的,不然后面的会覆盖前面的
(6) 键:理论上可以是任何不可变的数据类型,但是实际开发的时候,一般使用字符串作为key
(7) 值:可以是任意数据类型数据

dict1={}   #创建一个空字典
print(type(dict1))   #<class 'dict'>

dict2={'a':1,'b':2,1:100,('a',1):'abc'}   #列表不可作为字典的键,但可以作为值
print(dict2)   #{'a': 1, 'b': 2, 1: 100, ('a', 1): 'abc'}

(1)将其他的类型,转换成字典

dict3=dict([(1,2),(3,4)])     
#数字,字符串,纯列表不可以转为字典,但是,列表中的元素是两位元祖
print(dict3)   #{1: 2, 3: 4}

dict4={'a':1,'b':2,'a':'123'}   #键应是唯一的,不然被覆盖
print(dict4)  #{'a': '123', 'b': 2}

2、查(获取字典元素的值) (2种)

注意:确定key存在用1([])语法获取值,不确定key值是否存在才用2(get)去获取值

(1)字典获取元素的值是通过key来获取的
字典[key]

person={'name':'小子','age':18,'face':90}
print(person['name'])   #小子
# print(person['aa'])  #KeyError: 'aa'  (如果key不存在,会报错)

(2)字典.get(key)

print(person['aaa'])  #如果key不存在,返回None

3.增加元素、修改元素

通过key获取字典元素,然后赋值,当key存在的时候就修改元素的值,不存在的时候就给字典添加键值对

person['height']=1.8
print(person)   #{'name': '小子', 'age': 18, 'face': 90, 'height': 1.8}

person['age']=20
print(person)   #{'name': '小子', 'age': 20, 'face': 90, 'height': 1.8}

4.删除键值对(2种)

(1)del
del 字典 --->删除整个字典
del 字典[key] --->删除指定键值对 (key不存在会报错)

del person['face']
print(person)   #{'name': '小子', 'age': 20, 'height': 1.8}

# del person['aaa']
# print(person)    #key如果不存在还是报错

(2)pop
字典.pop(key) ---> 会返回被删除的键值对对应的值

age=person.pop('age')
print(person,age)   #{'name': '小子', 'height': 1.8} 20

5.相关的数组属性

(1)字典.keys():获取字典所有的key,返回值的类型是dict_keys,但是可以把它当成列表来使用
(2)字典.values():获取字典所有的值(value)
(3)字典.items:将字典中所有的键值对转换成一个一个的元祖,key作为元祖的第一个元素,value作为元祖的第二个元素

students_dict={'name':'木子李','study_id':'py1805001',
                      'scores':{'english':90,'math':100}}
keys=students_dict.keys()
print(keys,type(keys))  
 #dict_keys(['name', 'study_id', 'scores']) <class 'dict_keys'>

(4)遍历获取每个key

for key in keys:
    print(key)
'''
结果:
name
study_id
scores
'''

print(students_dict.values())   
#dict_values(['木子李', 'py1805001', {'english': 90, 'math': 100}])

print(students_dict.items())   
#dict_items([('name', '木子李'), ('study_id', 'py1805001'), ('scores', {'english': 90, 'math': 100})])

6.遍历字典

(1)直接遍历字典获取的是所有的key(推用,内存消耗小)

for key in students_dict:
    print(key,students_dict[key])
'''
结果:
name 木子李
study_id py1805001
scores {'english': 90, 'math': 100}
'''

(2)遍历直接取到key和value(不推荐使用)

for key,value in students_dict.items():
    print(key,value)
'''
结果:
name 木子李
study_id py1805001
scores {'english': 90, 'math': 100}
'''

7.列表中有字典、字典中有字典、字典中有列表

练习:声明一个变量,作用是用来储存一个班的学生信息,信息包括姓名,性别,年龄,电话,至少存三个学生信息

students=[{'name':'张三','sex':'女','age':17,'tel':'1111'},
{'name':'李四','sex':'男','age':10,'tel':'2222'},
{'name':'王麻子','sex':'男','age':60,'tel':'333'}]


class1 = {
    'name': 'py1805',
    'address': '19-1',
    'students':[
        {'name': '张三', 'age': 18},
        {'name': '李四', 'age': 28},
        {'name': '王五', 'age': 20},
    ]
}

8.其他操作

(1)formkeys()
dict.formkeys(序列,value):创建一个新的字典,序列中的元素作为key,value作为值

new_dict = dict.fromkeys(['abc', 'dcc', '123'], '100')
print(new_dict)    #{'abc': '100', 'dcc': '100', '123': '100'}

(2)in
key in 字典:判断字典中是否存在指定的key

dog_dict={'color':'black','age':3,'type':'二哈'}
print('type' in dog_dict)   #True (判断键是否存在在字典中)

(3)update(更新)
字典1.update(字典2):使用字典2中的元素,去更新字典1中的键值对;如果字典2中对应的键值对在字典1中不存在就添加,存在就更新

dict1={'a':'aa','b':'bbb'}
dict1.update({'c':'ccc','a':'111'})
print(dict1)   #{'a': '111', 'b': 'bbb', 'c': 'ccc'}
上一篇 下一篇

猜你喜欢

热点阅读