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是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...
随机推荐
- 自描述C++部分面试题集
1.谈谈啥叫对象成员以及对象成员的构造函数调用调用方式. 在类中定义的数据成员一般都是基本的数据类型.但是类中的成员也可以是对象,叫做对象成员. C++中对对象的初始化时非常重要的操作,当创建一个对象 ...
- css3实现背景颜色渐变,文字颜色渐变,边框颜色渐变
css3的渐变可以使用2个或者多个指定的颜色之间显示平稳的过渡的效果.这篇文章主要介绍下css3实现背景颜色渐变,文字颜色渐变,边框颜色渐变的方法,以便大家学习参考! 1.css背景颜色渐变 代码: ...
- embedded database (H2, HSQL or Derby), please put it on the classpath
Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded data ...
- SpringCloud系列之集成分布式事务Seata应用篇
目录 前言 项目版本 项目说明 Seata服务端部署 Seata客户端集成 cloud-web module-order module-cart module-goods module-wallet ...
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(一): 搭建基本环境、整合 Swagger、MyBatisPlus、JSR303 以及国际化操作
相关 (1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y- ...
- SpringBoot常用数据源配置
#mysql8.X url: jdbc:mysql://localhost:3306/yourdbname?serverTimezone=UTC&useSSL=false&allowP ...
- 【题解】p2388阶乘之乘
原题传送门 题解一堆\(O(n)\)算法真给我看傻了. 考虑\(10=2*5\),因子2肯定更多,所以计算因子5的个数即可. 从5到n这\(n-5+1\)个数的阶乘里面,都各自含有一个因子\(5=1* ...
- 实现 (5).add(3).minus(2) 功能
Number.prototype.add = function (number) { if (typeof number !== 'number') { throw new Error('请输入数字- ...
- Vue 项目部署出现css样式失效的解决方案
解决方案1: 你的问题就是css权重问题 如果相同权重可能存在引入顺序问题 简单粗暴解决办法 1: 如果是单页面 写入index.html里面 2:直接修改源码的css 很简单~~~3:加个!impo ...
- JavaScript 基础 学习(三)
JavaScript 基础 学习(三) 事件三要素 1.事件源: 绑定在谁身上的事件(和谁约定好) 2.事件类型: 绑定一个什么事件 3.事件处理函数: 当行为发生的时候,要执行哪一个函数 ...