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 ...
随机推荐
- RHEL8/CentOS8的基础防火墙配置-用例
systemctl systemctl unmask firewalld #执行命令,即可实现取消服务的锁定 systemctl mask firewalld # 下次需要锁定该服务时执行 syste ...
- JAVA8之StringJoiner
作用:运用了StringBuilder的一个拼接字符串的封装处理 示例: StringJoiner sj = new StringJoiner("-", "[" ...
- mysql truncate 引起的 system lock,导致其他进程等待
1.现状:上线新项目,导致api服务延迟,cpu正常,内存正常,连接数正常,sql性能正常,sql进程正常(初步分析) 最后再次分析sql进程才发现 由于该 truncate table name ; ...
- PHP for的1个问题
PHP for的1个问题 <pre><?php for ($k = 13; $k > 0; $k--) { echo 'wef'; }?></pre>ps: ...
- git 删除错误提交commit(删除敏感文件)
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch test/docs/456776898979.ap ...
- windows 下验证文件MD5
CertUtil -hashfile C:\Users\admin\Downloads\aaa.txt MD5 CertUtil -hashfile C:\Users\admin\Downloads\ ...
- 集合类源码(二)Collection之List(ArrayList, LinkedList, Vector)
ArrayList 功能 完全命名 public class ArrayList<E> extends AbstractList<E> implements List<E ...
- Linux纯小白操作(以安装JDK为例)
[本文只针对纯小白,有基础的请略过] 最近公司给分配工作使用的虚拟机都是Linux系统的,以前完全没接触过,今天按照网上一些教程操作,好多地方感觉对小白不够友好(有些问题非常小白那些教程没有写出来.我 ...
- mvc5 源码解析2-1:mvchandler的执行
上一节说在urlroutingmodule中mvchandler 映射到httpcontext上,那mvchandler又是怎么执行的呢? (1).httpruntime 从isapiruntime ...
- python 正则表达式、re
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. 参考链接:https://www.runoob.com/python/python-reg-expressions. ...