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

  不可变数据类型(又叫可哈希):元祖,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. Write a program to copy its input to its output, replacing each tab by \t, each backspace by \b, and each backslash by \\. This makes tabs and backspa

    #include <stdio.h> #define DBS '\\' void main() { int c; while((c=getchar())!=EOF) { if(c=='\t ...

  2. C语言学习笔记第一章——开篇

    本文章B站有对应视频 (本文图片.部分文字引用c primer plus) 什么是C语言 顾名思义,c语言是一门语言,但是和我们所讲的话不同,它是一门编程语言,是为了让机器可以听懂人的意思所以编写的一 ...

  3. H5禁止微信内置浏览器调整字体大小

    微信webview内置了调整字体大小的功能,用户可以根据实际情况进行调节.但是这也会导致字体大小改变以后,出现页面布局错乱的情况. 1.iOS的解决方案是覆盖掉微信的样式: body { /* IOS ...

  4. HDU 2157 How many ways?? 题解

    题目 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线 ...

  5. SimpleImputer 中fit和transform方法的简介

    sklearn.impute.SimpleImputer 中fit和transform方法的简介 SimpleImputer 简介 通过SimpleImputer ,可以将现实数据中缺失的值通过同一列 ...

  6. 前端进阶笔记(一)---JS语言通识

    一.语言按照语法分类 1.非形式语言:中文 英文 2.形式语言:乔姆斯基谱系(四种文法 上下文包含文法) 0型 无限制文法 1型 上下文相关文法 2型 上下文无关文法 正则文法 二 产生式(BNF) ...

  7. HotSpot的类模型(4)

    我们继续接着上一篇 HotSpot的类模型(3)分析,这次主要分析表示java数组的C++类. 4.ArrayKlass类 ArrayKlass继承自Klass,是所有数组类的抽象基类,类及重要属性的 ...

  8. redis(二十四):Redis分布式锁以及实现(python)

    阅读目录 什么事分布式锁 基于redis实现分布式锁 一.什么是分布式锁 我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的锁进行处理,并且可以完美的运行,毫无 ...

  9. 机器学习实战基础(十):sklearn中的数据预处理和特征工程(三) 数据预处理 Preprocessing & Impute 之 缺失值

    缺失值 机器学习和数据挖掘中所使用的数据,永远不可能是完美的.很多特征,对于分析和建模来说意义非凡,但对于实际收集数据的人却不是如此,因此数据挖掘之中,常常会有重要的字段缺失值很多,但又不能舍弃字段的 ...

  10. IDEA搭建SpringMVC简单接口框架(Maven项目)

    1, 新建项目,选择Maven,如图一次选择,最后点击Next 2, 输入GroupId和ArtifactId,点击Next 3,根据需要选择自定义maven配置,点击Next.(①可以直接跳过) 4 ...