数据类型划分:可变数据类型、不可变数据类型

  不可变数据类型(又叫可哈希):元祖,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的更多相关文章

  1. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  2. python基础类型(字典:dict)

    字典的介绍: 字典(dict)Python中唯一的一个映射类型.他是以{}括起来的键值对组成,在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址,然后将key-value保存到这 ...

  3. python基础之字典dict

    不可变数据类型:tuple.bool.int.str --可哈希类型可变数据类型:list.dict.set --不可哈希类型dict-key 必须是不可变数据类型,可哈希dict-value 任意数 ...

  4. Python基础数据类型-字典(dict)

    Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...

  5. python入门14 字典dict

    字典dict是无序的key:value格式的数据序列 #coding:utf-8 #/usr/bin/python """ 2018-11-11 dinghanhua 字 ...

  6. python基础之五:dict 字典

    1.数据类型的划分:可变数据类型.不可变数据类型 不可变的有:元组(tuple).字符(str).整型(int).布尔型(bool) 它们都可以哈希 可变的:列表(list).set.字典(dict) ...

  7. Python基础数据类型(五) dict字典

    字典dict{} 字典数字自动排序 enumerate 枚举 for i,k in enumerate(dic,1) #第二个参数默认不写就是0 ---枚举 print(i,k) dict,以{}来表 ...

  8. python基础之字典、集合

    一.字典(dictionary) 作用:存多个值,key-value存取,取值速度快 定义:key必须是不可变类型,value可以是任意类型 字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分 ...

  9. python中的字典(dict),列表(list),元组(tuple)

    一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...

随机推荐

  1. Sharepoint 2013设置customErrors

    原文地址:http://www.cnblogs.com/renzh/archive/2013/03/05/2944309.html#3407239 一.首先设置IIS中的Web.config文件 找到 ...

  2. CentOS/RHEL 6.4/5.9 安装 Adobe Flash Player 11.2

    1.root登录: $ su 2.安装 Adobe YUM Repository RPM package X86_64 ________________________________________ ...

  3. python基础知识练习3

    1.如何实现 "1,2,3" 变成 ['1','2','3'] ? 如何实现['1','2','3']变成[1,2,3] ?(代码题) # 第一个问题 str1 = "1 ...

  4. html5中二进制对象Blob的使用——Blob与ArrayBuffer、TypeArray和String的相互转换

    在网页开发中遇到这样一个问题,在使用select的时候,想让里面的文字水平居中.首先想到的是text-align:center;但是发现在Chrome浏览器下不兼容,需要使用到text-align-l ...

  5. github检索小技巧

    GitHub筛选项目 首先打开主页 没有github账户的小伙伴先注册再登录 (其实不登录也可以下载项目) 登录状态的搜索框 未登录状态下的搜索框 点击搜索框输入内容 根据自己需要,输入关键字搜索 明 ...

  6. FocusBI:《商业智能7B理论模型》创造者

    <商业智能7B理论模型>专门为培养企业级BI人才<如何一个人完成BI项目,成为企业级BI人才>课程而创造,历经我7年的商业智能项目实施工作和经验的提炼与总结,分别深入在甲方公司 ...

  7. 「疫期集训day13」雾天

    我们千里迢迢赶来这里支援协约国----与德军正面交锋的美国士兵 今天考试签到题都没A,失误重大,T1几周前做过的拓扑排序板子都没写,T2失误在没敢调试,对自己信心不足,30分钟写了个DP,几分钟没调出 ...

  8. 小师妹学JVM之:cache line对代码性能的影响

    目录 简介 一个奇怪的现象 两个问题的答案 CPU cache line inc 和 add 总结 简介 读万卷书不如行万里路,讲了这么多assembly和JVM的原理与优化,今天我们来点不一样的实战 ...

  9. WPF DataGrid ScrollBar Style

    效果图如下 代码 <DataGrid.Resources> <Style TargetType="{x:Type ScrollBar}"> <Sett ...

  10. SSRF漏洞简单分析

    什么是SSRF漏洞 SSRF(服务器端请求伪造)是一种由攻击者构造请求,服务器端发起请求的安全漏洞,所以,一般情况下,SSRF攻击的目标是外网无法访问的内部系统. SSRF漏洞形成原理. SSRF的形 ...