导语
  之前的内容中分享了关于数字、字符串、布尔值、列表、元组等数据类型,接下来看一个与之前的数据结构不一样的数据类型。字典,这里的字典与我们使用的字典是不一样的,它有点类似于编程意义上的Map,是以键值对的方式来进行表示的。下面就来详细看一下Python中的字典这种数据类型。

文章目录

  • 字典
    • 字典基本操作
      • 基本结构和Value
      • 字典的Key
      • 字典是无序的
      • 获取字典数据
      • 删除字典的元素
      • 字典遍历
    • 字典高级操作
      • def clear(self)
      • def copy(self)
      • def fromkeys(*args, **kwargs)
      • def get(self, *args, **kwargs)
      • def items(self)
      • def keys(self)
      • def values(self)
      • def pop(self, k, d=None)与def popitem(self)
      • def setdefault(self, *args, **kwargs)
      • def update(self, E=None, **F)
  • 整理基本数据类型
    • 数字
    • 字符串
    • 列表
    • 元组
    • 字典
    • 布尔值
  • 总结

字典

字典基本操作

基本结构和Value

  通过下面的例子可以看出,对于这个字典的键值对来说,它的Value可以任何值。

# 字典#dictinfo={"k1":"v1","k2":"v2"
}info={"k1":12,"k2":True,"k3":[11,22,33,{"kk1":"vv1"}],"k4":(11,22,33,44)
}

字典的Key

上面演示了在字典中的值是可以任意进行写的,但是在字典中对于键的操作又是什么样子呢?实际上在内存中的字典是通过Hash表进行存储的。所以说对于列表、字典是不能作为字典的key,因为他们在内存中不能实现Hash 操作

info ={1:"nihui","k1":"nihui",True:"123",# [12,13]:123,("tet","123"):"nihui",{12,23}:"th"
}
print(info)

字典是无序的

  通过下面代码进行打印,在经过测试之后发现每次print的字典都是不一样的,所以说明字典是无序的


info={"k1":12,"k2":True,"k3":[11,22,33,{"kk1":"vv1"}],"k4":(11,22,33,44)
}print(info)

获取字典数据

  由于字典中的数据时无序的,所以不能通过之前的索引或者是切片获取其中的值,但是字典也提供了一种查找值的操作,由于是kv的形式,所以可以直接通过key定位到对应的值。


info={"k1":12,"k2":True,"k3":[11,22,33,{"kk1":"vv1"}],"k4":(11,22,33,44)
}v = info["k1"]
print(v)

删除字典的元素

  可以看到通过下面这种方式是可以对k1 进行删除操作的。也就是说字典可以进行del删除的。

info={"k1":12,"k2":True,"k3":[11,22,33,{"kk1":"vv1"}],"k4":(11,22,33,44)
}del  info["k1"]
print(info)

字典遍历

  对字典进行for循环的时候,默认就是对于key的循环


info={"k1":12,"k2":True,"k3":[11,22,33,{"kk1":"vv1"}],"k4":(11,22,33,44)
}
# 获取键
for item in info:print(item)for item in  info.keys():print(item)
# 获取值
for item in  info.values():print(item)# 获取键值
for item in info.items():print(item)

字典高级操作

def clear(self)

表示清除字典中的数据

info={"k1":12,"k2":True,"k3":[11,22,33,{"kk1":"vv1"}],"k4":(11,22,33,44)
}info.clear()
print(info)

def copy(self)

进行字典的拷贝操作

info={"k1":12,"k2":True,"k3":[11,22,33,{"kk1":"vv1"}],"k4":(11,22,33,44)
}v = info.copy();
print(info)
print(v)

def fromkeys(*args, **kwargs)

@staticmethod # known case
def fromkeys(*args, **kwargs)

可以看到这个方法是一个静态方法,通过可以通过dict,直接进行调用。从方法的返回值来看,它其实将第一个参数作为字典的key,以第二个参数为value自动生成了一个字典。

v = dict.fromkeys(["k1",123,"999"])
print(v)v = dict.fromkeys(["k1",123,"999"],123)
print(v)

def get(self, *args, **kwargs)

根据Key获取值,如果对应的key不存在的时候,会返回第二个参数指定的值,当然也可以使用默认值。而不像是通过[] 进行取值如果key不存在则会直接报错。

info={"k1":12,"k2":True,"k3":[11,22,33,{"kk1":"vv1"}],"k4":(11,22,33,44)
}v = info["k1"]
print(v)v1 = info.get("11111",123)
print(v1)

def items(self)

获取字典的kv集合

def keys(self)

获取字典的key集合

def values(self)

获取字典value集合


info={"k1":12,"k2":True,"k3":[11,22,33,{"kk1":"vv1"}],"k4":(11,22,33,44)
}
# 获取键
for item in info:print(item)for item in  info.keys():print(item)
# 获取值
for item in  info.values():print(item)# 获取键值
for item in info.items():print(item)

def pop(self, k, d=None)与def popitem(self)

移除指定的key,但是def popitem(self)方法并没有参数也就是说随机删除一个元素。

dic = {"k1":"v1","k2":"v2"
}v = dic.pop("k1")
print(v)v1 = dic.popitem()
print(v1)

def setdefault(self, *args, **kwargs)

设置默认设置,如果key存在则不设置并且返回对应的值,如果key不存在,进行设置并且返回新值。

dic = {"k1":"v1","k2":"v2"
}v = dic.setdefault("k1","123")
print(dic)
print(v)v1 = dic.setdefault("k3","456")
print(dic)
print(v1)

def update(self, E=None, **F)

更新字典的中的数据,如果指定的key存在则进行更新,如果不存在则进行添加。

dic = {"k1":"v1","k2":"v2"
}dic.update({"k1":"1231231","k3":123})
print(dic)dic.update(k1 = 123,k3=213,k5="12321");
print(dic)

整理基本数据类型

数字

将某个数据类型转换为数字使用int()

字符串

replace/find/join/strip/startwith/split/upper/lower/format等函数

tempalte =" this is {name} age:{age}"
v = tempalte.format(name="nihui",age=24)
v1 = tempalte.format(**{"name":"nihui","age":12})
print(v)
print(v1)

列表

append/extend/insert等函数
索引、切片、循环

元组

索引、切片、循环

一级元素不能被修改、删除、增加

字典

get/update/keys/values/items等函数

for循环、索引

以上都可以进行in操作。对于in操作也是一个基本操作

dic = {"k1":"v1","k2":"v2"
}v = "k1" in dic
print(v)

布尔值

使用 0 1
bool()操作
在以下这些场景中的布尔值为FALSE
None 、""、() 、[]、{} 0

总结

  在字典中对于上面函数最常用的就是keys、values、items、update等,如果想要更好的使用好字典还是要多多进行编程操作。并且在编程过程中进行思考。

Python精通-Python字典操作相关推荐

  1. python 字典处理_python numpy求解积分python中的字典操作及字典函数

    字典 dict_fruit = {'apple':'苹果','banana':'香蕉','cherry':'樱桃','avocado':'牛油果','watermelon':'西瓜'} 字典的操作 W ...

  2. Python精通-Python学习路线详细介绍

    导语   自从上次说完Python学习路线之后就再也没有更新过关于Python的东西,那么从这篇博客开始将对整个的Python技术栈开启以场全面的旅途,更其他系列一样,博主会不定期的更新关于Pytho ...

  3. Python精通-Python集合操作详解

    导语   在前面的分享中说完了基本的数据类型,基本的数据类型有六种分别是数字.字符串.列表.元组.列表.以及布尔值.接下来说的就是在Python中比基本数据类型变量等知识更加深入的数据类型叫做集合 文 ...

  4. Python精通-Python元组操作

    导语   在介绍元组之前那,先来回顾一个变量赋值问题.对于字符串来说一旦被创建如果需要进行修改的时候就如同下图中展示的一样,需要新开辟空间对新的值进行存储.对于其他语言也是同样适用.   元组作为Py ...

  5. Python精通-Python列表操作

    导语   在之前的关于Python的分享中对于基本数据类型中字符串.布尔值等做了详细的分享.接下来的内容就是在Python中的另一个比较重要的基本数据类型列表,关于列表在之前对于字符串进行切分的时候简 ...

  6. Python精通-Python字符串格式化操作

    导语   在之前的分享中提到了关于Python基本的数据类型,并且提到了一个基本数据类型字符串,花费了三篇博客的时间对于字符串的基本操作做了分享.这篇博客主要分享关于字符串格式化的问题,在开发中经常会 ...

  7. Python精通-Python局部变量与全局变量的区别

    导语   在子程序定义的变量被称为是局部变量,在程序一开始定义的变量被称为是全局变量.全局变量的作用域是整个程序的生命周期,而局部变量的作用域知识在其定义的范围内可以使用.当全局变量与局部变量出现重名 ...

  8. Python精通-Python函数使用

    导语   在编程意义上的函数其实是指完成某种操作的代码块,当然这个是个人的理解,但是这个概念在所有的编程语言中都是通用的.这个代码块用来完成某写特定的操作.但是在数学上的函数却是表示某种对应关系,这两 ...

  9. Python精通-Python入门基础

    导语   入坑Python系列开始了 文章目录 Python入门程序 Python程序运行方式 Python代码分析 执行一个操作内容 变量 条件语句 基本数据类型 字符串 数字 基本运算 加法 减法 ...

最新文章

  1. 亿级PV物联网的基础架构
  2. 【采用】反欺诈之四大杀器
  3. boost::phoenix::if_相关的测试程序
  4. mysql fio测试_MySQL Hardware--FIO压测
  5. spss练习数据_SPSS篇——如何在成千上百万个数据中标识重复个案
  6. python qt 按钮_PyQt(Python+Qt)学习随笔:toolButton的popupMode属性
  7. 转转集团:二手市场iPhone12夺5G销冠 华为Mate40 Pro最保值
  8. MySQL建立双向主备复制server配置方法
  9. 学习Linux第一周所有命令总结
  10. 新闻:西部数据拟200亿美元收购原东芝存储 《创新者的窘境》硬盘发展史
  11. 均匀试验设计表格的问题
  12. visio技巧(曲线、连接点、自制模具)
  13. EI/scopus推荐-智能交通与智慧城市会议
  14. Qt调用工业相机之海康威视相机
  15. 嵌入式软件开发到底是干什么的?
  16. 地铁的建设主要用什么计算机知识,地铁知识竞答--选择题填空题
  17. 迅为RK3399开发板外接固态硬盘测试
  18. ios如何解除dns被劫持_iPhone被DNS劫持,老跳广告咋办?
  19. 实验一 简单计算器的实现(QT实现)
  20. 阻止创建“迅雷下载“目录

热门文章

  1. mysql 备份_shell脚本实现MySQL全量备份+异地备份
  2. 海量大数据大屏分析展示一步到位:DataWorks数据服务对接DataV最佳实践 1
  3. 【转载】Kubernetes 加入Docker 平台,Mac和Windows开发者的福音
  4. 用C#完成Swift远程推送通知
  5. 聚集表(clustered table)data page中的数据行可以无序
  6. 难道计算机专业真的没落
  7. 想要一本Linux书籍?投出您想要的Linux书籍,由红联论坛邮寄给您(2007新增)(转)...
  8. 根治“Microsoft JET Database Engine 错误 80004005”
  9. Json和object相互转化,排除json中多余的字段
  10. 洛谷——P1017 进制转换