字典

字典是一种可变的容器,可以存储任意类型的数据

字典中的每个数据都是用键进行索引,而不像序列容器(str,list,tuole)可以用整数进行索引

字典中的数据没有先后顺序,字典的存储是无序的

字典中的数据以键值对的形式进行存储

字典中的键不能重复,且只能用不可变的类型作为字典的键

语法:

#创建空字典
d = {}
#创建非空字典
d = {"name":"liuwei","age":25}

创建字典的构造函数

#生成一个空的字典等同于{}
dict()
#用可迭代对象创建一个字典
dict(iterable)
#用关键字传参形式生成一个字典
dict(**kwargs)

注:字典的键必须为不可变类型的值

可变类型有四种:1. 列表(list)

​ 2. 字典(dict)

​ 3. 集合(set)

​ 4. 字节数组(bytearray)

除上述四种其他都为不可变类型

不可变类型有三种:1. 字符串(str)

​ 2. 元组(tuple)

​ 3. 整数(int)

字典的基本操作

字典的键索引

语法:

d = {"name":"liuwei","age":27}
d["name"]
"liuwei"
d["age"]
27

作用:用键获取字典的键对应的值

删除字典元素

语法:

d = {"name":"liuwei","age":27}
del d['age']
print(d)
{"name":"liuwei"}

字典的键判断

可以用 in 运算符判断一个键是否存在于字典中,如果存在返回True,否则返回False

not in 返回值与 in 相反

语法:

d = {"name":"liuwei","age":27}
"name" in d
True
"age" not in d
False

字典的遍历

字典是可迭代对象,字典只能对键进行遍历

例子:

d = {"name":"liuwei","age":27}
for i in d:
print(i)
#结果
name
age

可以用于字典的函数

len(x) 返回字典中键的个数
max(x) 返回字典中键最大值
min(x) 返回字典中键的最小值
sum(x) 返回字典中键的所有和
any(x) 真值测试,只能对键进行测试,只要有一个键为真值,结果都为True
all(x) 真值测试,所有的键结果都为真值,结果才为True

字典的方法

函数 说明
D代表字典对象
D.clear() 清空字典
D.pop(key) 移除键,同时返回此键所对应的值
D.copy() 返回字典D的副本,只复制一层(浅拷贝)
D.update(D2) 将字典 D2 合并到D中,如果键相同,则此键的值取D2的值作为新值
D.get(key, default) 返回键key所对应的值,如果没有此键,则返回default
D.keys() 返回可迭代的 dict_keys 集合对象
D.values() 返回可迭代的 dict_values 值对象
D.items() 返回可迭代的 dict_items 对象

字典推导式

字典推导式是用可迭代对象来创建字典的表达式

语法:

{键表达式:值表达式 for 临时变量 in 可迭代对象 [if 真值表达式]} if 真值表达式可以省略
注:[]里的内容代表可以省略

例子:

#生成一个字典,键为数字0-9 值为键的平方
d = {x:x**2 for x in range(10)}
print(d)
#结果
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

最新文章

  1. 十分钟掌握Activity的生命周期与启动模式
  2. Can't add self as subview的困惑
  3. WPF中的DataTemplate
  4. android入门——BroadCast(2)
  5. js函数绑定同时,如何保留代码执行环境?
  6. pycharm 2017新建文件添加编码方式等
  7. JAVA 第二天 内部类
  8. 计算机网络三:域名、IP地址和TCP/IP协议
  9. c# nginx 配置
  10. 学习 yii2.0——视图之间相互包含
  11. zookeeper的搭建和简单的使用
  12. 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势
  13. linux 用户/群组/权限
  14. Javascript如何避免连续调用中取到不存在的属性而导致报TypeError错?
  15. C#图片处理(转zhjzwl/archive)
  16. Linux中的绝对路径和相对路径
  17. CentOS 6 安装python3.6
  18. ThinkPHP CURD mysql操作
  19. Python面试题(十六)
  20. [golang] go的typeswitch guard(类型区别)语法和type assertion(类型断言)语法

热门文章

  1. 右键没有新建word选项
  2. VUE从入门到放弃(项目全流程)————VUE
  3. 03: OpenGL ES 基础教程02 使用OpenGL ES 基本步骤
  4. SpringBoot的注解注入功能移植到.Net平台(开源)
  5. Java门面模式
  6. windows下使用zkui
  7. Spring MVC-从零开始-web.xml中classpath和classpath* 有什么区别
  8. 探索ASP.NET Core 3.0系列一:新的项目文件、Program.cs和generic host
  9. Redis-->Ubutn上的安装教程
  10. 推荐几个我近期排查线上http接口偶发415时用到的工具