day07_python_字典

2018-08-29  本文已影响0人  mmlong_07

一、字典

1.字典(dict):字典是容器类型的数据,也是序列,以键值对作为元素(字典里面存的数据全是成对出现的)

键值对:key:value
{key1:value1,key2:value2,...}

键:(key)字典中的key值要唯一,并且数据是不可变的数据类型(数字、布尔、字符串和元组,推荐使用字符串):
值:(value)可以不唯一,可以是任何类型的数据
2.声明字典

    dict1 = {'1':100,'a':97,True:'布尔'}
    person = {'name':haha,'age':23,'work_age':5}

    person3={}  #空的字典

3.获取字典的元素对应的值(字典存数据,实质还是存的value,key是获取value的手段)

字典[key]---通过key获取值

4.字典的是可变的(增删改)---可变指的是字典中的键值对的值和个数可变的

1).查:获取值
字典[key]---通过key获取值

通过字典[key]获取value的时候,如果key不存在就会发生KeyError异常
字典.get(key)---这样获取字典的value值,如果获取的key值不存在,不会报错,返回的结果是None

    perosn.get('name')
    person.get('sex')   #None

总结:确定key值肯定存在的时候用[]语法获取value,key值可能不存在,不存在的时候希望报错用[],想要自己对它进行特殊处理的时候使用get获取value

2)遍历字典:直接遍历取到的是字典的所有key值

    for key in person:
        print(person[key])

3).改(修改key对应的value)
字典[key]=new_value

4).增(添加键值对)
字典[key] = 值 #key本来不存在对应的是增加

5)删(删除键值对)
del 字典[key]

    del person['sname']

字典.pop(key):将字典里的指定的key的value取出,并将原来的键值对删除

name = person.pop('name')
person ={'name':'张三','age':24,'grade':90}
if person.get('sex')==None:
    person['sex']='男'

5.字典的运算

1).字典不支持'+'和'*'
2). in 和not in:是判断key值是否存在

computer = {'brand':'联想','color':'black' }

3)len(字典):看字典有几个键值对


len(computer)   

6.字典的方法

a.字典.clear():删除字典中的所有元素(键值对)


        computer.clear()
        print(computer)

b.字典.copy():拷贝字典中的所有元素,放到一个新的字典中


        dict1={'a':1,'b':2}
        dict2 = dict1 #将dict1中的地址赋给dict2,两个变量指向同一块内存区域
        dict3=dict2.copy() #将dict1中的内存复制到一个新的内存区域中然后将新的地址给dict3

7.dict.fromkeys(序列,默认值=None)

将序列中的每个值作为key,默认值为value创建一个新的字典
注意:默认值可以不写,写的话只能写一个值


print(dick.fromkeys('abc',0)) #{'a':0,'b':0,'c':0}

8.字典.keys()

获取字典中的所有key,以dict_keys列表的形式返回


        print(dict1.keys())

9.字典.values()

获取字典中的所有的value

10.字典.items():以元组形式获取字典的每个键值对,这种方式不推荐使用,对cpu的消耗更大,因为要先进行转换dict.items()

    for key,value in dict.items():

11.字典.setdefault(key,默认值=None):给字典添加键值对,如果key存在,这个方法无作为

dict1.setdefault('ab','abc')
dict1.setdefault('dd')
print(dict1)

12.字典1.update(字典2):将字典2中的键值对更新到字典1中,如果字典2中key在字典1中存在,就用字典2中key对应的值取更新字典1中的值,如果不存在就添加到字典1中


    dict1={'a':1}
    dict2={'b':2,'a':2}
    dict1.update(dict2)
    print(dict1)
#{'a':2,'b':2}  
   

学生管理系统
1.一个系统可以存储多个学生
2.一个学生可以存储:姓名,电话,籍贯,专业,学号等等
3.添加学生
4.删除学生
5.修改学生的信息

studnet_system = 列表

什么使用列表?什么时候使用字典
1.保存的多个数据的类型都是同一个类型对象时候,用列表
例如:声明一个变量保存所有数学成绩,声明一个变量保存所有的学生信息
2.保存的多个数据的类型不同,使用字典

1.列表中有字典

student_system=[
{'name':'stu1','age':18},
{'name':'stu2','age':19}
]

print(student_system[0]['name'])

2.字典中有列表

py_class={
'class_name':'python1806',
'students':[
{'name':'stu1','age':18},
{'name':'stu2','age':19}
]
}
print(py_class['students'][0]['name'])

练习:在python1806中添加一个学生,学生的信息自己输入,名字、年龄和id


py_class={
    'class_name':'python1806',
    'students':[
        {'name':'student1','age':20,'id':'001'},
        {'name':'student2','age':20,'id':'002'},
        {'name':'student3','age':20,'id':'003'}
    ]
}
name=input("请输入姓名:")
age=input('请输入年龄:')
id_=input("请输入id:")
student={'name':name,'age':int(age),'id':id_}
py_class['students'].append(student)
print(py_class['students'])

练习:输入一个学生的姓名根据,姓名取删除对应的学生


py_class={
    'class_name':'python1806',
    'students':[
        {'name':'student1','age':20,'id':'001'},
        {'name':'student2','age':20,'id':'002'},
        {'name':'student3','age':20,'id':'003'}
    ]
}
def input_message(py_class):
    name=input("请输入姓名:")
    age=input('请输入年龄:')
    id_=input("请输入id:")
    student={'name':name,'age':int(age),'id':id_}
    py_class['students'].append(student)
    print(py_class['students'])

def del_student(py_class):
    name=input('请输入要删除学生的姓名:')
    students=py_class['students']
    for student in students:
        if student['name']==name:
            py_class['students'].remove(student)
            print('删除成功')
            exit(0)
    print('你输入的学生不存在')

二、集合(set)

集合是python中的一种容器类型的数据,无序的但是是可变的,值唯一(和字典的key一样)

1.声明一个集合


set1={数据1,数据2,...数据n}

和数学里面的集合差不多

sum(序列):python内置求序列的中元素的和的方法
注意:将其他的序列转换成集合自带一个去重的功能

set2 = set{'name name'}

2.查(获取集合中的元素)

集合是不能单独获取其中某一个元素的
遍历获取每一个元素

for item in set3:
    print(item)

3.增(添加元素)

a.集合.add(元素)

set3.add('good')

b.集合1.update(集合2):将集合2中的元素,添加到集合1中

set3.update({1,2,3})

4.删:删除元素只有remove

集合.remove(元素)


set3.remove('abc')

5.改(改不了)

6.数学相关的集合运算

a.判断包含情况
集合1>=集合2(判断集合1中是否包含集合2)
集合1<=集合2(判断集合2中是否包含集合1)


print(set1 >= set2)

b.并集:|
两个集合合并


set1={1,2,3}
set2={2,3,4,5}
print(set1 | set2)  #1,2,3,4,5

c:交集:&
两个集合公共部分

    print(set1 & set2)  #2,3

d:差集:-

    print(set2-set1)    #1

e:补集:^
两个集合除了公共部分以外的部分

print(set1^set1) #1,4,5
上一篇 下一篇

猜你喜欢

热点阅读