字典:key-value形式

  1)取数据方便   #字典里面没有重复的key

  2)查询速度快

#字典是无序的

一、定义一个字典

infos = {
'name':'王小明',
'sex':'male',
'addr':'北京',
'age':'' #最后没逗号
}
print(infos.get('name')) #>>> 王小明

二、字典的方法:

  1)查:

  字典的取值:有两种方法

①print(infos.get('name'))  #如果key不存在,返回None

  print(infos.get('name',404)) #如果key不存在,返回定义的404

②print(infos['sex'])    #如果key不存在会报错

  2)增:三种增加的方式

①infos['phone']=15866661111   #增加一个key-v
②infos.setdefault('money','100w') #增加一个k-v
print(infos)

这两方式的区别:key存在时,都能增加,但是

infos['phone']=15866661112     #如果key存在时,会修改原来的value
infos.setdefault('name','张晓') #如果key存在时,不会修改原来的值
print(infos)

将一个变量加入字典:

users.setdefault(username,pwd)  #方式一
users[username]=pwd #方式二

合并两个字典:a.update(b)

a = {'a':''}
b = {'b':''}
a.update(b) #如果b字典的key与a中的key相同,b会更新a的value
print(a) >>> {'a': '', 'b': ''}

  2)修改:一种方式

infos['name']= '小胖'

  3)删:

infos.pop('age')  #指定key来删除
infos.popitem() #随机删除一个key(用处不大)
del infos['phone'] #指定key来删除
infos.clear() #清空字典
print(infos)

三、字典里常用的三个内置方法:

print(d.values())  #获取字典所有的value
print(d.keys()) #获取字典所有的key
print(d.items()) #获取字典所有的k-v

四、【字典举例】

people = {
'田雨':{
'age':18,
'money':200000,
'clothes':'100套',
'hzp':'n多',
'shoes':['nike','addis','lv','chanle']
},
'张三':{
'金库':'2000w',
'house':['三环一套','4环2套'],
'cars': {
'japan':['普拉多','兰德酷路泽'],
'usa':['林肯','凯迪拉克','福特'],
'china':['五菱宏光','qq','红旗']
}
}
}
people['张三']['cars']['usa'].append('牧马人') # people['田雨']['shoes'].append('匡威') #
# print(people)
# people['田雨']['money'] = people['田雨']['money']+200
# people['田雨']['money'] += 200
# print(people)

五、字典的循环:

1)直接循环字典的话,只取到字典的key

for p in people:
print(p)

  >>>张三

     田雨

2)循环的时候,同时取字典的key和value

for k,v in people.items():
print(k,'--->',v)

输出:

田雨 ---> {'age': 18, 'clothes': '100套', 'hzp': 'n多', 'shoes': ['nike', 'addis', 'lv', 'chanle'], 'money': 200000}
张三 ---> {'cars': {'china': ['五菱宏光', 'qq', '红旗'], 'japan': ['普拉多', '兰德酷路泽'], 'usa': ['林肯', '凯迪拉克', '福特', '牧马人']}, '金库': '2000w', 'house': ['三环一套', '4环2套']}

3)字典里面用in来判断某个值是否存在话,只是判断key是否存在

if 'key1' in users: #存在返回True,不存在返回False
print('xxx')

六、【字典练习二】:注册-字典

#注册:验证用户名是否已存在,将新注册的用户名和密码加入到字典
users = {
'zhangsan':'',
'wangwu':'',
}
for i in range(3): #限制错误3次
username = input('账号:').strip()
passwd = input('密码:').strip()
cpasswd = input('密码确定:').strip()
if username=='' or passwd=='' or cpasswd=='':
print('用户名/密码不能为空')
elif username in users:
print('用户名已经被注册!')
elif passwd!=cpasswd:
print('两次输入的密码不一致')
else:
print('恭喜,注册成功!')
# users.setdefault(username,passwd)
users[username]=passwd #注册成功,将key和value加入users的字典
break #
else:
print('错误次数过多')
print(users)

七、【字典练习三】:

#写一个录入学生作业情况的一个程序:
#1、查看学生作业情况 ,输入用户名 #choice=1
#存在的话,print
#不存在的话
#2、录入学生作业情况(姓名、日期、已交/未交) #choice=2
#3、录入的情况允许输入3次,需要验证为空的情况
#判断choice不存在的情况 homeworks = {
'张流量':{'2018.3.22':"未交",'2018.3.23':'wei交'},
'田雨':{'2018.3.22':"未交",'2018.3.23':'wei交'},
} choice = input("请输入您的选择 1:查看学生作业情况 2:录入学生作业情况:")
if choice == '':
for x in range(3):
name = input("请输入您要查看的学生的姓名:").strip()
if name in homeworks:
print("%s:%s" %(name,homeworks[name]))
break
elif name=='':
print("姓名不能为空")
else:
print("没有找到此学生信息")
else:
print("查询次数过多,请稍后再试")
elif choice == '':
for i in range(3):
username = input("请输入需要录入的学生的姓名:").strip()
date = input("请输入需要录入的日期:").strip()
status = input("请输入'已交'或'未交':").strip()
if username=='' or date=='' or status=='':
print("录入的信息不完整")
elif username in homeworks:
homeworks[username][date] = status #姓名+ 时间相同时,不报错,可更新原来已录入的状态,效果和update一样
#homeworks[username].setdefault(date,status) #姓名+ 时间相同时,不报错,但是状态不能更新
#homeworks[username].update({date:status})
print("您录入后此学生的信息更新为,%s:%s" % (username, homeworks[username]))
break
else:
homeworks[username] = {date:status} #k-v的形式
print("您录入学生的信息为,%s:%s" % (username,homeworks[username]))
break
else:
print("输入错误次数过多")
else:
print("输入错误,请输入1或2") print("已录入的全部信息:%s" % homeworks)       

集合:

一、集合的定义

定义空集合:s = set()

定义集合:s = {1,3,5,7}  #注意与字典区分

d = {'k':'v'}  #字典

集合天生就能去重(集合中没有重复的元素),集合也是无序的

s = set('')  #字符串/list可以强制转换为集合
print(s) >>> {'', '', '', ''} #去除了重复的元素

二、集合的交集、并集、差集

1)取交集:取两个集合都有的元素

s2 = set('')
s3 = {'', '', '', '', ''}
print(s2 & s3) #取交集的第一种方式
print(s3.intersection(s2)) #取交集第二种方式 >>> {'', '', '', ''}
{'', '', '', ''}

2)取并集:两个集合合并到一起,并去重

print(s2 | s3)     #方式一
print(s2.union(s3)) #方式二

3)取差集:去掉set3

print(s2-s3)
print(s2.difference(s3)

4)对称差集:保留两集合都没有的,去掉都有的

print(s2 ^ s3)
print(s4.symmetric_difference(s5))

三、集合的方法:

增、删、改、判断交集

s.add('ss')    #加元素
s.pop() #随机删除
s.remove('ss') #删除某个元素
s.update({1,2,3}) #把另一个集合加进去 s.isdisjoin(s1) #两个集合没有交集返回True,有交集返回False
                                                     
张三

python学习笔记(三)- 字典、集合的更多相关文章

  1. python学习笔记(三)---字典

    字典 在Python中,字典 字典 是一系列键 键-值对 值对 .每个键 键 都与一个值相关联,你可以使用键来访问与之相关联的值.与键相关联的值可以是数字.字符串.列表乃至字典.事实上,可将 任何Py ...

  2. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  3. Python 学习笔记三

    笔记三:函数 笔记二已取消置顶链接地址:http://www.cnblogs.com/dzzy/p/5289186.html 函数的作用: 給代码段命名,就像变量給数字命名一样 可以接收参数,像arg ...

  4. python学习笔记三--字典

    一.字典: 1. 不是序列,是一种映射, 键 :值的映射关系. 2. 没有顺序和位置的概念,只是把值存到对应的键里面. 3. 通过健而不是通过偏移量来读取 4. 任意对象的无序集合 5. 可变长,异构 ...

  5. python学习笔记(三)、字典

    字典是一种映射类型的数据类型.辣么什么是映射呢?如果看过<数据结构与算法>这一本书的小伙伴应该有印象(我也只是大学学习过,嘻嘻). 映射:就是将两个集合一 一对应起来,通过集合a的值,集合 ...

  6. python学习笔记(三)-列表&字典

    列表: 一.列表操作"""Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一 ...

  7. Python学习笔记四--字典与集合

    字典是Python中唯一的映射类型.所谓映射即指该数据类型包含哈希值(key)和与之对应的值(value)的序列.字典是可变类型.字典中的数据是无序排列的. 4.1.1字典的创建及赋值 dict1={ ...

  8. python学习笔记(三):文件操作和集合

    对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个 ...

  9. python学习笔记三--字典的使用

    一.基本使用: 1. 赋值:{key:value} 1.1 与列表相同处:会改变索引(键)相关联的值的改变 1.2 与列表不同处:不用考虑值的长度,而列表是有序的需要考虑末尾偏移量,超过末尾偏移量的会 ...

  10. Python学习笔记004_字典_集合

    >>> # 字典 用大括号表示, 它是影射类型,相当于java中的Map >>> >>> dict1 = {'李宁': '一切皆有可能', '耐克 ...

随机推荐

  1. python select解析 socket高效通信服务器 自己写的socketserver

    import select import socket import queue server = socket.socket()#创建服务器端 server.bind(('localhost',99 ...

  2. URI,url简介

    URI,URL是什么? URI :Uniform Resource Identifier,统一资源标识符: URL:Uniform Resource Locator,统一资源定位符: URN:Unif ...

  3. Django 数据库迁移

    Django 数据库迁移 DATABASES = { # Django默认配置使用sqlite3数据库 # 'default': { # 'ENGINE': 'django.db.backends.s ...

  4. day01-计算机原理与操作系统

  5. Docker进入容器后使用ifconfig等命令“command not found”解决办法

      当进入一个容器后,使用ifconfig.ip addr等命令时,出现如下“command not found”:       解决办法:   yum update yum -y install n ...

  6. AIUI开放平台:多轮对话返回前几轮语槽数据

    编写云函数: AIUI.create("v2", function(aiui, err){ // 获取 response response = aiui.getResponse() ...

  7. 如何在myeclipse中实现jquery的自动提示功能

    在web开发过程中,myeclipse中jsp可以实现自动提示功能,但是jquery代码却无法实现自动提示,需要自己一个个手动去输入,效率过低,怎么办? 工具/原料   jquery 1.8.3.js ...

  8. PAT 甲级 1054 The Dominant Color (20 分)

    1054 The Dominant Color (20 分) Behind the scenes in the computer's memory, color is always talked ab ...

  9. react高阶组件

    高阶组件 为了提高组件复用性,在react中就有了HOC(Higher-Order Component)的概念.所谓的高阶组件,其本质依旧是组件,只是它返回另外一个组件,产生新的组件可以对属性进行包装 ...

  10. note 2 运算符和表达式

    运算符 +.-.*./ %求余Modulus **指数Exponent 表达式 #C = 5/9 (F - 32) print 5.0/9*(75-32) 自动类型转换 类型相同,结果类型不变 1/2 ...