zoukankan      html  css  js  c++  java
  • Python基本知识(4)——字典

    1、字典(dict)讲解及增删改查操作

      数据类型划分:可变数据类型,不可变数据类型

      不可变数据类型:元组,bool, int, str。又称可哈希
      可变数据类型:list,dict,set。又称不可哈希
      dict(字典)的key(键) 必须是不可变数据类型(可哈希)。它的value(值)是任意数据类型。
      dict 优点:能利用二分查找去查询,速度快。
                       存储大量的关系型数据

    1 dic = {
    2     'name':'xiaoming',
    3     'age':20,
    4     'sex':'male'
    5 }
    View Code

     

    1.2、增

     1 #增:
     2 #1、
     3 #1.1、增加原先没有的
     4 dic['height'] = 180
     5 print(dic)
     6 #result:
     7 #{'name': 'xiaoming', 'age': 20, 'sex': 'male', 'height': 180}
     8 #1.2、覆盖原先的
     9 dic['age'] = 18
    10 print(dic)
    11 #result:
    12 #{'name': 'xiaoming', 'age': 18, 'sex': 'male', 'height': 180}
    13 #2、setdefault对于已有的键值,更改不采取任何操作,对于没有的键值,更改才有效果
    14 '''
    15 dic.setdefault('weight')#后面不加值,则默认为None
    16 print(dic)
    17 '''
    18 #result:
    19 #{'name': 'xiaoming', 'age': 18, 'sex': 'male', 'height': 180, 'weight': None}
    20 dic.setdefault('weight',130)
    21 print(dic)
    22 #result:
    23 #{'name': 'xiaoming', 'age': 18, 'sex': 'male', 'height': 180, 'weight': 130}

    1.3、删

     1 #
     2 #1、
     3 print(dic.pop('weight'))#130,说明字典中pop也有返回值
     4 print(dic)
     5 #result:
     6 #{'name': 'xiaoming', 'age': 18, 'sex': 'male', 'height': 180}
     7 
     8 #若删除一个字典里面没有的键,会报错,如:
     9 '''
    10 dic.pop('hobby')
    11 '''
    12 #这时,若我们不知道有没有这个见,但是我们有想删除它,只需要在后面加一点提示即可,如:
    13 print(dic.pop('hobby',None))#在控制台,会打印出来这个None
    14 
    15 #2、 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
    16 dic1 = {
    17     'name':'xiaoming',
    18     'age':20,
    19     'sex':'male',
    20     'height':180,
    21     'hobby':'football',
    22     'school':'PeKing University',
    23     'hometown':'anhui'
    24 }
    25 print(dic1.popitem())#有返回值
    26 print(dic1)
    27 dic1.popitem()
    28 print(dic1)
    29 dic1.popitem()
    30 print(dic1)
    31 dic1.popitem()
    32 print(dic1)
    33 #result:
    34 #{'name': 'xiaoming', 'age': 20, 'sex': 'male', 'height': 180, 'hobby': 'football', 'school': 'PeKing University'}
    35 # {'name': 'xiaoming', 'age': 20, 'sex': 'male', 'height': 180, 'hobby': 'football'}
    36 # {'name': 'xiaoming', 'age': 20, 'sex': 'male', 'height': 180}
    37 # {'name': 'xiaoming', 'age': 20, 'sex': 'male'}
    38 
    39 #3、del
    40 dic2 = {
    41     'name':'xiaoming',
    42     'age':20,
    43     'sex':'male'
    44 }
    45 del dic2['age']#若删除没有的键,则报错,故尽量用pop方法
    46 print(dic2)
    47 #result:
    48 #{'name': 'xiaoming', 'sex': 'male'}
    49 
    50 #4、clear:清空
    51 dic3 = {
    52     'name':'xiaoming',
    53     'age':20,
    54     'sex':'male'
    55 }
    56 dic3.clear()
    57 print(dic3)
    58 #result:
    59 #{}

    1.4、改

     1 #
     2 #1、覆盖
     3 dic4 = {
     4     'name':'xiaoming',
     5     'age':20,
     6     'sex':'male'
     7 }
     8 dic4['age'] = '18'
     9 print(dic4)
    10 
    11 #2、update
    12 dic5 = {
    13     'name':'xiaoming',
    14     'age':20,
    15     'sex':'male'
    16 }
    17 dic6 = {
    18     'name':'daming',
    19     'height':180
    20 }
    21 dic5.update(dic6)#已有键值则覆盖,没有的键值则添加
    22 print(dic5)
    23 #result:
    24 #{'name': 'daming', 'age': 20, 'sex': 'male', 'height': 180}

    1.5、查

     1 #
     2 dic7 = {
     3     'name':'xiaoming',
     4     'age':20,
     5     'sex':'male'
     6 }
     7 print(dic7.keys())
     8 print(dic7.values())
     9 print(dic7.items())
    10 print(dic7['name'])#缺点:若没有这个键,则报错
    11 print(dic7.get('name'))#print(dic7.get('name1',None))若没有这个键,则给出提示
    12 #result:
    13 #dict_keys(['name', 'age', 'sex'])
    14 # dict_values(['xiaoming', 20, 'male'])
    15 # dict_items([('name', 'xiaoming'), ('age', 20), ('sex', 'male')])
    16 # xiaoming
    17 # xiaoming
    18 
    19 #先看一下一个对a,b赋值,并打印出来的例子。
    20 a,b=1,2
    21 print(a,b)
    22 a,b=[1,2]#列表
    23 print(a,b)
    24 a,b=(1,2)#元祖
    25 print(a,b)
    26 #result:
    27 #1 2
    28 #1 2
    29 #1 2
    30 
    31 #打印出来的是一个元祖
    32 for i in dic7.items():
    33     print(i)
    34 #result:
    35 #('name', 'xiaoming')
    36 #('age', 20)
    37 #('sex', 'male')
    38 
    39 #如果想要打印每一个键值,而不是元祖,该怎么做呢?参考上面对a,b的赋值
    40 for k,v in dic7.items():
    41     print(k,v)
    42 # result:
    43 # name xiaoming
    44 # age 20
    45 # sex male

     2、字典的嵌套

     1 dic = {
     2     'name':['xiaoming','daming','xiaohong'],
     3     'age':[18,19,20],
     4     'class':{
     5         'teacher':'xiaowang',
     6         'age':50,
     7         'sex':'male'
     8     }
     9 }
    10 #将'daming'改为'DAMING'
    11 dic['name'][1] = dic['name'][1].upper()
    12 print(dic)
    13 
    14 #在class字典中添加一个键值:'subject':Chinese
    15 dic['class'] ['subject'] = 'Chinese'
    16 print(dic)
    字典的嵌套
  • 相关阅读:
    Python基础语法 第2节课(数据类型转换、运算符、字符串)
    python基础语法 第5节课 ( if 、 for )
    python基础语法 第4节课 (字典 元组 集合)
    Python基础语法 第3节课 (列表)
    A. Peter and Snow Blower 解析(思維、幾何)
    C. Dima and Salad 解析(思維、DP)
    D. Serval and Rooted Tree (樹狀DP)
    C2. Balanced Removals (Harder) (幾何、思維)
    B. Two Fairs 解析(思維、DFS、組合)
    D. Bash and a Tough Math Puzzle 解析(線段樹、數論)
  • 原文地址:https://www.cnblogs.com/missdx/p/10856615.html
Copyright © 2011-2022 走看看