Python精通-Python字典操作

素颜马尾好姑娘i 2023-05-30 13:57 77阅读 0赞

导语
  之前的内容中分享了关于数字、字符串、布尔值、列表、元组等数据类型,接下来看一个与之前的数据结构不一样的数据类型。字典,这里的字典与我们使用的字典是不一样的,它有点类似于编程意义上的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可以任何值。

  1. # 字典
  2. #dict
  3. info={
  4. "k1":"v1",
  5. "k2":"v2"
  6. }
  7. info={
  8. "k1":12,
  9. "k2":True,
  10. "k3":[11,22,33,{ "kk1":"vv1"}],
  11. "k4":(11,22,33,44)
  12. }

字典的Key

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

  1. info ={
  2. 1:"nihui",
  3. "k1":"nihui",
  4. True:"123",
  5. # [12,13]:123,
  6. ("tet","123"):"nihui",
  7. { 12,23}:"th"
  8. }
  9. print(info)

字典是无序的

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

  1. info={
  2. "k1":12,
  3. "k2":True,
  4. "k3":[11,22,33,{ "kk1":"vv1"}],
  5. "k4":(11,22,33,44)
  6. }
  7. print(info)

获取字典数据

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

  1. info={
  2. "k1":12,
  3. "k2":True,
  4. "k3":[11,22,33,{ "kk1":"vv1"}],
  5. "k4":(11,22,33,44)
  6. }
  7. v = info["k1"]
  8. print(v)

删除字典的元素

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

  1. info={
  2. "k1":12,
  3. "k2":True,
  4. "k3":[11,22,33,{ "kk1":"vv1"}],
  5. "k4":(11,22,33,44)
  6. }
  7. del info["k1"]
  8. print(info)

字典遍历

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

  1. info={
  2. "k1":12,
  3. "k2":True,
  4. "k3":[11,22,33,{ "kk1":"vv1"}],
  5. "k4":(11,22,33,44)
  6. }
  7. # 获取键
  8. for item in info:
  9. print(item)
  10. for item in info.keys():
  11. print(item)
  12. # 获取值
  13. for item in info.values():
  14. print(item)
  15. # 获取键值
  16. for item in info.items():
  17. print(item)

字典高级操作

def clear(self)

表示清除字典中的数据

  1. info={
  2. "k1":12,
  3. "k2":True,
  4. "k3":[11,22,33,{ "kk1":"vv1"}],
  5. "k4":(11,22,33,44)
  6. }
  7. info.clear()
  8. print(info)

def copy(self)

进行字典的拷贝操作

  1. info={
  2. "k1":12,
  3. "k2":True,
  4. "k3":[11,22,33,{ "kk1":"vv1"}],
  5. "k4":(11,22,33,44)
  6. }
  7. v = info.copy();
  8. print(info)
  9. print(v)

def fromkeys(*args, **kwargs)

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

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

  1. v = dict.fromkeys(["k1",123,"999"])
  2. print(v)
  3. v = dict.fromkeys(["k1",123,"999"],123)
  4. print(v)

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

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

  1. info={
  2. "k1":12,
  3. "k2":True,
  4. "k3":[11,22,33,{ "kk1":"vv1"}],
  5. "k4":(11,22,33,44)
  6. }
  7. v = info["k1"]
  8. print(v)
  9. v1 = info.get("11111",123)
  10. print(v1)

def items(self)

获取字典的kv集合

def keys(self)

获取字典的key集合

def values(self)

获取字典value集合

  1. info={
  2. "k1":12,
  3. "k2":True,
  4. "k3":[11,22,33,{ "kk1":"vv1"}],
  5. "k4":(11,22,33,44)
  6. }
  7. # 获取键
  8. for item in info:
  9. print(item)
  10. for item in info.keys():
  11. print(item)
  12. # 获取值
  13. for item in info.values():
  14. print(item)
  15. # 获取键值
  16. for item in info.items():
  17. print(item)

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

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

  1. dic = {
  2. "k1":"v1",
  3. "k2":"v2"
  4. }
  5. v = dic.pop("k1")
  6. print(v)
  7. v1 = dic.popitem()
  8. print(v1)

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

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

  1. dic = {
  2. "k1":"v1",
  3. "k2":"v2"
  4. }
  5. v = dic.setdefault("k1","123")
  6. print(dic)
  7. print(v)
  8. v1 = dic.setdefault("k3","456")
  9. print(dic)
  10. print(v1)

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

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

  1. dic = {
  2. "k1":"v1",
  3. "k2":"v2"
  4. }
  5. dic.update({ "k1":"1231231","k3":123})
  6. print(dic)
  7. dic.update(k1 = 123,k3=213,k5="12321");
  8. print(dic)

整理基本数据类型

数字

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

字符串

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

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

列表

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

元组

索引、切片、循环

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

字典

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

for循环、索引

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

  1. dic = {
  2. "k1":"v1",
  3. "k2":"v2"
  4. }
  5. v = "k1" in dic
  6. print(v)

布尔值

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

总结

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

发表评论

表情:
评论列表 (有 0 条评论,77人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python精通-Python元组操作

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

    相关 Python字典操作总结

    字典相对于列表,查找速度快,不会随着元素增多而变慢,时间复杂度O(1),并且字典是另一种可存储任意类型对象。 字典中存储的元素都是键值对(key:value),键值之间用冒号

    相关 Python字典操作

    Python的字典操作 Python提供了多种应用于字典的操作。因为字典为容器,内建len函数可以将字典当作单一参数使用听切返回字典对象中项目(键/值对)的数目。