2018-08-28-day07-字典和集合

一、字典

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}  
    `print(key,value)
print(person)

学生管理系统
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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 1.字典 格式:{键值对1,键值对2,键值对3...} 字典是容器类型(序列),以键值对作为元素字典里的元素都是以...
    不忘初心_c590阅读 158评论 0 1
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,894评论 2 89
  • 一、字典(dict) 字典是容器类型(序列),以键值对作为元素(字典里面存的数据全是以键值对的形式出现的)——{k...
    fanzl阅读 242评论 0 0
  • 20171012,第七周周四。 国庆节期间,老公向我抱怨了孩子几句,我有些受不了。我喜欢听老公说...
    记得祝福阅读 214评论 7 7
  • 周六早上,孩子们还没有起床,微信就响。我翻了身,继续埋进被子里面。微信又响,再响,然后居然是我们两个的微信,此起彼...
    卢璐说阅读 4,203评论 27 75