python基础day6_字典dict
数据类型划分:可变数据类型、不可变数据类型
不可变数据类型(又叫可哈希):元祖,bool ,int,str,
可变数据类型(又叫不可哈希):list,dict,set(集合)
dict的key必须是不可变数据类型,可哈希
value可以是任意数据类型
dict 优点:二分查找进行查询
储存大量的关系型数据
特点:无序的(python3.5及之前)
增---setdefault、直接加
dic = { 'name':'cheryol','age':18,'sex':'female',}
dic['high'] = 168#没有键值对,添加
dic['age'] = 16#如果有键,则值覆盖 dic.setdefault('weight',100)
dic.setdefault('name','jack')#有键值对,不做任何改变,没有才添加
删 ---pop 、popitem、del、clear
dic = { 'name':'cheryol','age':18,'sex':'female',}
dic.pop('age') #有返回值,按照键删除(pop和get类似)
print(dic) # 结果{'name': 'cheryol', 'sex': 'female'} dic.pop('what')
print(dic) # 此时就会报错,因为字典中不存在what dic.pop('what',None)#可设置返回值
print(dic) # 此时不会报错
print(dic.pop('what','智障,没这个键')) # 输出提示“智障,没这个键”
dic = { 'name':'cheryol','age':18,'sex':'female',}
s = dic.popitem() #3.5随机删除,3.6删最后一个,有返回值(是元组),返回删除的键值对
print(s,dic) #结果{('sex', 'female') {'name': 'cheryol', 'age': 18}
dic = { 'name':'cheryol','age':18,'sex':'female',}
del dic['name']
print(dic) # {'age': 18, 'sex': 'female'}
del dic['name1']
print(dic) # 此时将会报错,所以用pop更好
del dic #删除字典
dic = { 'name':'cheryol','age':18,'sex':'female',}
dic.clear() #清空字典
改---update
dic = { 'name':'cheryol','age':18,'sex':'female',}
dic2 = {"name":"alex","weigth":150}
dic2.update(dic) #把所有dic的键值对更新到dic2中(没有的键值对就加进去,有的就覆盖)
print(dic)#{'name': 'cheryol', 'age': 18, 'sex': 'female'}
print(dic2)#{'name': 'cheryol', 'weigth': 150, 'age': 18, 'sex': 'female'}
查---查询的时候将dict当成list即可(习惯用get)
dic = { 'name':'cheryol','age':18,'sex':'female',}
print(dic.keys(),type(dic.keys())) #dict_keys(['name', 'age', 'sex']) <class 'dict_keys'>
print(dic.values(),type(dic.values())) #dict_values(['cheryol', 18, 'female']) <class 'dict_values'>
print(dic.items(),type(dic.items())) #dict_items([('name', 'cheryol'), ('age', 18), ('sex', 'female')]) <class 'dict_items'> for i in dic: #直接写dic,默认打印dic的键(等价于for i in dic.keys():)
print(i) #[name,age,sex] print(dic['name']) #结果cheryol(存在即输出,不存在则报错)
print(dic.get('name1','没有这个键')) #不会报错,可以自行设置返回值(和pop类似)
例子
#实现a,b互换
a,b = 1,2
a,b =b,a
print(a,b) #2,1 for k,v in dic.items():
print(k,v)
'''
结果
name cheryol
age 18
sex female
'''
实例
字典实例1:输入一串字符,统计相连相连数字的个数
info = input('input:').strip()#输入34 fd3243refd321
for i in info:
if i.isalpha():
info = info.replace(i," ")
l = info.split()
print(len(l))#输出3,此时的l为['34', '3243', '321']
字典实例2:
将大于66的值保存在字典的第一个key中,将小于66的值保存在字典的第二个key中。
即 { 'k1':大于66的所有值列表,'k2':小于66的所有值列表}
li = [11,22,33,44,55,66,77,88,99,90]
dic = {}
lda = []
lxiao = []
for i in li:
if i == 66:continue
if i > 66:
lda.append(i)
else:
lxiao.append(i)
dic.setdefault('k1',lda)
dic.setdefault('k2',lxiao)
print(dic)
#结果{'k1': [77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55]}
字典实例3:
输出商品列表,用户输入序号,显示用户选中的商品
商品 li = ["手机","电脑","鼠标垫","游艇"]
要求:1:页面显示 序号+商品名称,如:
1 手机
2 电脑
...
2: 用户输入选择的商品号,然后打印出该商品的名称
3:若用户输入的商品序号有误,则提示输入有误,并重新输入。
4:用户输入Q或者q,退出程序
flag = 1
while flag:
li = ["手机","电脑","鼠标垫","游艇"]
for i in li:
print("{}\t{}".format(li.index(i)+1,i))
choice = input("输入选择的商品号(输入Q或者q,退出程序):")
if choice.isdigit():
choice = int(choice)
if choice >= 1 and choice < len(li):
print("对应商品:" + li[choice-1])
else:
print("输入有误,重新输入")
elif choice.upper() == 'Q':break
else:print("请输入数字!")
python基础day6_字典dict的更多相关文章
- python基础之字典dict和集合set
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...
- python基础类型(字典:dict)
字典的介绍: 字典(dict)Python中唯一的一个映射类型.他是以{}括起来的键值对组成,在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址,然后将key-value保存到这 ...
- python基础之字典dict
不可变数据类型:tuple.bool.int.str --可哈希类型可变数据类型:list.dict.set --不可哈希类型dict-key 必须是不可变数据类型,可哈希dict-value 任意数 ...
- Python基础数据类型-字典(dict)
Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...
- python入门14 字典dict
字典dict是无序的key:value格式的数据序列 #coding:utf-8 #/usr/bin/python """ 2018-11-11 dinghanhua 字 ...
- python基础之五:dict 字典
1.数据类型的划分:可变数据类型.不可变数据类型 不可变的有:元组(tuple).字符(str).整型(int).布尔型(bool) 它们都可以哈希 可变的:列表(list).set.字典(dict) ...
- Python基础数据类型(五) dict字典
字典dict{} 字典数字自动排序 enumerate 枚举 for i,k in enumerate(dic,1) #第二个参数默认不写就是0 ---枚举 print(i,k) dict,以{}来表 ...
- python基础之字典、集合
一.字典(dictionary) 作用:存多个值,key-value存取,取值速度快 定义:key必须是不可变类型,value可以是任意类型 字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分 ...
- python中的字典(dict),列表(list),元组(tuple)
一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...
随机推荐
- Sharepoint 2013设置customErrors
原文地址:http://www.cnblogs.com/renzh/archive/2013/03/05/2944309.html#3407239 一.首先设置IIS中的Web.config文件 找到 ...
- CentOS/RHEL 6.4/5.9 安装 Adobe Flash Player 11.2
1.root登录: $ su 2.安装 Adobe YUM Repository RPM package X86_64 ________________________________________ ...
- python基础知识练习3
1.如何实现 "1,2,3" 变成 ['1','2','3'] ? 如何实现['1','2','3']变成[1,2,3] ?(代码题) # 第一个问题 str1 = "1 ...
- html5中二进制对象Blob的使用——Blob与ArrayBuffer、TypeArray和String的相互转换
在网页开发中遇到这样一个问题,在使用select的时候,想让里面的文字水平居中.首先想到的是text-align:center;但是发现在Chrome浏览器下不兼容,需要使用到text-align-l ...
- github检索小技巧
GitHub筛选项目 首先打开主页 没有github账户的小伙伴先注册再登录 (其实不登录也可以下载项目) 登录状态的搜索框 未登录状态下的搜索框 点击搜索框输入内容 根据自己需要,输入关键字搜索 明 ...
- FocusBI:《商业智能7B理论模型》创造者
<商业智能7B理论模型>专门为培养企业级BI人才<如何一个人完成BI项目,成为企业级BI人才>课程而创造,历经我7年的商业智能项目实施工作和经验的提炼与总结,分别深入在甲方公司 ...
- 「疫期集训day13」雾天
我们千里迢迢赶来这里支援协约国----与德军正面交锋的美国士兵 今天考试签到题都没A,失误重大,T1几周前做过的拓扑排序板子都没写,T2失误在没敢调试,对自己信心不足,30分钟写了个DP,几分钟没调出 ...
- 小师妹学JVM之:cache line对代码性能的影响
目录 简介 一个奇怪的现象 两个问题的答案 CPU cache line inc 和 add 总结 简介 读万卷书不如行万里路,讲了这么多assembly和JVM的原理与优化,今天我们来点不一样的实战 ...
- WPF DataGrid ScrollBar Style
效果图如下 代码 <DataGrid.Resources> <Style TargetType="{x:Type ScrollBar}"> <Sett ...
- SSRF漏洞简单分析
什么是SSRF漏洞 SSRF(服务器端请求伪造)是一种由攻击者构造请求,服务器端发起请求的安全漏洞,所以,一般情况下,SSRF攻击的目标是外网无法访问的内部系统. SSRF漏洞形成原理. SSRF的形 ...