python基础之五:dict 字典
1、数据类型的划分:可变数据类型、不可变数据类型
不可变的有:元组(tuple)、字符(str)、整型(int)、布尔型(bool) 它们都可以哈希
可变的:列表(list)、set、字典(dict) 不能hash
2、字典中,key必须是不可变数据类型,即tuple,str,int,bool
value可以是任意类型;
优点:采用二分法查找,速度快;
存储大量的关系型数据,32位python可以存上亿的字符,64位更是大的无边!
特点:无序的
3、字典的具体例子
dic = {'name': ['keery', 'tom', 'jack'],
'gender': ['male', 'female'],
'num': [2, 4, 6, 19, 199],
True: 1,
('', ''): "yes your are tuple",
2: 'you are int'
}
print(dic)
4、对字典的操作
'''增'''
# 方法一:
dic['city'] = ['wuhan', 'suzhou', 'Newyork'] # 特点:没有该键则是无序插入,有该key就变成覆盖了,即修改!
print(dic)
# 方法二:
dic.setdefault('address') # 如果字典中没有该键,就单独插入键,值默认是None
dic.setdefault('city') # 如果有则,不做任何改变
dic.setdefault('mobil', '')
print(dic) '''删'''
# 方法一:
print(dic.pop('mobil')) # 有返回值,返回key对应的value
print(dic.pop('ta', '没有该键!')) # 如果没有该键,可以设置返回提示 # 方法二:del
del dic['address'] # 删除单个键值对
# del dic # 清空字典,等同clear
# dic.clear() # 方法三:不建议使用,随机删除
print(dic.popitem()) # 返回元组,里面是键和值 '''改'''
# 方法一:
dic['name'] = {'tommy'}
# 方法二:update
dic1 = {'name':['tom', 'jack', 'jane'],
22: 'wo are int too'
}
dic2 = {'name': 'jane',
'num': [2, 4, 6, 19, 199],
True: 1,
}
print(dic1)
dic1.update(dic2) # dic1加入dic2中自己没有的元素,并且修改有相同键的值与dic2保持一致
print(dic1) '''查'''
print(dic2['name']) # 如果该键没有,则会报错
print(dic2.keys(), type(dic2.keys())) # 类型虽然是dict_keys,其实就是列表
print(dic2.values())
print(dic2.items())
# 遍历
for i in dic2: # 就是遍历keys
print(i)
for i in dic2.keys(): # 等同上面的,所以可以不用加keys
print(i)
for i in dic2.items(): # 出现的是元组,里面是key和value
print(i)
5、相关面试题
# 可以赋值
a, b = 1, 2
'''
面试题:a = 1, b = 2 如何用一行代码,让两个变量互换值
'''
a = 1
b = 2
a, b = b, a
print(a, b) # 类似可以延申,只要变量个数与后面的值的个数是相等的即可
c, d = [1, 2]
print(c, d)
e, f = [1, 2, ], [6, 7]
print(e, f)
# 于是可以如此遍历
for k, v in dic2.items():
print(k, v) # 最后写推荐的查询方法 get 有返回值,不报错
print(dic2.get('name1', '没有对应的键!'))
6、字典的嵌套
dic = {'name': ['keery', 'tom', 'jack'],
'gender': ['male', 'female'],
'num': {
'numric' : [2, 4, 6, 19, 199],
'address' : 'wuhan',
}
}
# 建议用get取查询,有返回值,不报错
print(dic.get('name', None)[0])
dic.get('num', None).setdefault('city', ['New York', 'Capiton'])
print(dic)
dic.get('gender', None).append('Unkown')
print(dic)
# 不建议的查询方法
dic['gender'] = 'female'
print(dic)
7、补充字符以及列表相关的面试题:
计算用户输入的内容中有几个整数。如:content=input('请输入内容:') #fhjwew22288s8sd2223
要求,数字连起来的算一个整数,即222288、8、2223
'''
思路:循环内容时,如果碰见字母,用空格替换,最后会变成: 222888 2223
然后使用split(),形成一个数组,就可以知道有多少个数了!
'''
content = input('请输入内容>>>>>>>>>:') for i in content:
if i.isalpha():
content = content.replace(i, " ") # 如果没有赋值给content,永远无法实现要求!
con_num_li = content.split()
print(con_num_li)
print('您输入的内容中有{0}个整数'.format(len(con_num_li)))
python基础之五:dict 字典的更多相关文章
- Python - 基础数据类型 dict 字典
字典简介 字典在 Python 里面是非常重要的数据类型,而且很常用 字典是以关键字(键)为索引,关键字(键)可以是任意不可变类型 字典由键和对应值成对组成,字典中所有的键值对放在 { } 中间,每一 ...
- python基础(六)dict字典和文件操作open
字典dict 使用key来标注value的数据类型,key和value是一一对应的.在字典中key是唯一的,所以字典也是无序的. #定义一个字典 dict = { 'name' : 'sylar', ...
- python基础数据类型--dict 字典
字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必 ...
- python基础之dict、set及字符
python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射类型,采用键值对(key-value)的形式存 ...
- python基础——使用dict和set
python基础——使用dict和set dict Python内置了字典:dict的支持,dict全称dictionary,在其它语言中也称为map(映射),使用键-值(key-value)存储,具 ...
- 第四篇:python基础之dict、set及字符
python基础之dict.set及字符 python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射 ...
- 『Python基础-10』字典
# 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...
- Python基础知识(五)------字典
Python基础知识(四)------字典 字典 一丶什么是字典 dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 键: 必须是可哈希,(不可变的数据类型 ...
- Python基础数据类型之字典
基础数据类型之字典 ps:数据类型划分:可变数据类型和不可变数据类型. 不可变数据类型:元组(tupe).布尔值(bool).整数型(int).字符串(str).不可变数据类型也称为可哈希. 可变 ...
- python基础之dict和set
dict dict是dictionary的缩写,python内置了字典,在其他语言中也称为map,使用键值对储存,具有极快的查找速度. 如果是只用list来实现,就需要两个list,先在第一个list ...
随机推荐
- CentOS7 Hbase 安装(完全分布式)
安装前准备 hadoop安装 zookeeper安装 安装步骤 1.下载 $ wget http://mirror.bit.edu.cn/apache/hbase/2.0.5/hbase-2.0.5- ...
- SpringBoot之CommandLineRunner接口和ApplicationRunner接口
我们在开发中可能会有这样的情景.需要在容器启动的时候执行一些内容.比如读取配置文件,数据库连接之类的.SpringBoot给我们提供了两个接口来帮助我们实现这种需求.这两个接口分别为CommandLi ...
- 记一次错误排查,主要问题是跨平台文件中换行符(CRLF, LF)和垃圾字符( Caret Notation)
笔者测试SPEC14的workload的时候,需要自定义workload,又需要在Windows和Linux平台上都要测试,所以就遇到了这么个问题:测试工具报错,但是报出来的错误信息又跟错误对不上. ...
- 微信小程序起步
微信小程序 文档 微信小程序开发文档 本质 so微信小程序到底是什么?是原生的app还是H5应用? 简单来说,小程序是一种应用,运行的环境是微信(App)进程中,使用了部分的H5技术 目录介绍 app ...
- MYSQL LIMIT 性能测试
查询语句 # 普通表 SELECT * FROM test_page LIMIT m,n # 内存表 SELECT * FROM test_page_memory LIMIT m,n 总结 查询位置( ...
- 信安周报-第04周:系统函数与UDF
信安之路 第04周 前言 这周自主研究的任务如下: 附录解释: SQLi的时候应对各种限制,可以使用数据库自带的系统函数来进行一系列变换绕过验证 eg:字符串转换函数.截取字符串长度函数等 注入的时候 ...
- java.lang.NoClassDefFoundError: javax/el/ELManager
今天搭建一个ssm框架的项目,报了一个令我怀疑人生的错误: java.lang.NoClassDefFoundError: javax/el/ELManager 网上说出现这种错,大概有以下两个原因: ...
- torch.max
torch.max() torch.max(input) -> Tensor Explation: Returns the maximum value of all elements in ...
- 2019-11-29-VisualStudio-断点调试详解
原文:2019-11-29-VisualStudio-断点调试详解 title author date CreateTime categories VisualStudio 断点调试详解 lindex ...
- VS.NET(C#)--2.4_aspx默认页面模板代码
默认模板代码 客户端浏览器将忽视<script>块间任何字符,不在页面输出.通过<%=DataTime.Now.ToString() %> 将服务端代码放中间 < ...