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 ...
随机推荐
- web版聊天功能简单实现
一.问题 核心点:如何找到要发送的人? 要完成一个功能我觉得首先要分析该功能的逻辑及技术难点,而不是盲目的直接就撸代码,这样非常浪费时间.个人觉得web版聊天功能没什么实际应用场景,以前看过中国移动好 ...
- 企业级Nginx负载均衡与keepalived高可用实战(二)keepalived篇
1.Keepalived高可用软件 1.1.Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实 ...
- fiddler抓包-2-5分钟学会手机端抓包
前言 小伙伴们在前篇是否学会了简单的电脑web或其它软件抓包了呢?今天小编给大家带来的是fiddler设置手机代理抓手机端的数据包. 大致流程如下: 1.准备一台wifi功能正常的真机或虚拟机:2.设 ...
- Spring Security简介与入门Demo
1:Spring Security简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配 ...
- Java中List集合去除重复数据的六种方法
1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list. ...
- mongodb数据库环境配置
数据是每一前端人员必定接触的一样,所有的数据都是后端来编写,如果自己想练习项目,却没有数据,而是写一些假数据,去编写,或者通过json-server搭建一个数据,今天我们就通过MongoDB来搭建一个 ...
- Eureka和ZooKeeper的区别
首先我们先说下: RDBMS==>(MySql,Oracle,SqlServer等关系型数据库)遵循的原则是:ACID原则(A:原子性.C:一致性.I:独立性.D:持久性.). NoSql==& ...
- 安卓访问https错误,访问http可以,可能是nginx ssl证书配置有问题
开发中遇到react-native生成的android访问UAT和开发环境的http api都可以,但是访问生产环境的https就报错,还有就是第三方webhook调用你https网站的api也可能会 ...
- 将本地代码提交到github上
首先点击new,创建一个github仓库. 设置仓库名称. 这时候你需要创建一个ssh密匙,桌面右键Git Bash Here.敲入命令.cd ~/.ssh/,如果提示"no such&qu ...
- Asp.Net页面刷新防止跳转到其他浏览器或新的选项卡
前端页面js代码: <head> <script> window.name = "PremaritalCheckup_ManSocietyAgreeForm" ...