• Python字典


          上篇博客已经介绍了python的列表,本文介绍字典,字典也是python的基础数据类型之一。字典在python中关键字用dict表示。字典可以存储大量的数据,以及关系型数据。同样地,它也是python中唯一的映射类的数据类型。

             数据类型分类有多种,而本文中将数据分类只讨论可变不可变数据类型:

             可变的(不可哈希)数据类型:list , dict, set

             不可变的(可哈希)数据类型:str, int, bool, tuple

    字典以“键”,“值”, 即键值对得形式存在,其形象表示为: 

     dic  =  {'键1':‘值1’,'键2':‘值2’,...,'键n':‘值n’}

          字典得键必须是不可变的数据类型。(在工作中,键通常都是由数字,或者字符串(str)组成。    

          字典的值可以是任意数据类型,如:str,dict,list,tuple 等。

    字典的优点:

    1. 字典可以存储大量的数据与关系型数据,

    2. 字典查询速度快。

    注: python3.5之前包括3.5版本,字典都是无序的,而从python3.6开始,字典是有序的。

    字典的常用操作(增,删,改,查):

    字典增添方法:

    字典增添方法有两种:

         第一种方法为,直接对键添加内容,若原字典内有key与value,那么就直接对此key对应的内容进行修改,若没有此key则添加key与对应的值到字典中,例:

    1 dic ={'name': 'colin', 'age': 27}
    2 dic['name'] = 'Jenny'    # {'name': 'Jenny', 'age': 27}    改
    3 print(dic)
    4 dic['sex'] = ''
    5 print(dic)    # {'name': 'colin', 'age': 27, 'sex': '男'}   新增

    第二种方法为,使用setdefault()方法,该方法表示在字典后面添加新的键值对。几种表示方法与用法表示如下:

    1 dic = {'name': 'colin', 'age': 27}
    2 dic.setdefault('sex')
    3 print(dic.setdefault('sex'))             #  None
    4 print(dic)           # {'name': 'colin', 'age': 27, 'sex': None}
    5 dic.setdefault('name','jenny')
    6 print(dic)           # {'name': 'colin', 'age': 27}                 不做修改
    7 dic.setdefault('sex','')
    8 print(dic)           # {'name': 'colin', 'age': 27, 'sex': '男'}

    字典删除方法:

    字典的删除方法与列表一样有四种表示方法,但有所区别。其方法有:pop(), clear(), popitem(), del() 四种方法。

    pop()方法举例

     1 dic = {'name': 'colin', 'age': 27}
     2 dic.pop('name')
     3 print(dic)     # {'age': 27}
     4 dic.pop('name1')
     5 print(dic)    # 报错   无 'name1'
     
     7 print(dic.pop('name1', None))   # None
     8 dic.pop('name1', None)
     9 print(dic)    # 不报错   {'name': 'colin', 'age': 27}
     
    11 print(dic.pop('name1', '没有此键...'))  # 没有此键...
    12 print(dic)    # {'name': 'colin', 'age': 27}

       clear()方法举例

    1 dic = {'name': 'colin', 'age': 27}
    2 dic.clear()    # 清空
    3 print(dic)     # {}

    popitem()方法举例

    1 dic = {'name': 'colin', 'age': 27}
    2 dic.popitem()
    3 print(dic.popitem())   # ('name', 'colin')    返回一个元组
    4 print(dic)    # {'name': 'colin'}   默认删除最后一个键值对

    del方法举例

    1 dic = {'name': 'colin', 'age': 27}
    2 del dic     # 删除整个字典
    3 print(dic)   # 报错
    4 del dic['name']    # {'age': 27}   通过删除键来删除键值对
    5 print(dic)

    字典的改方法:

    字典的改方法通常有两种,一种是在增里面介绍了,与前面类似,第二种方法为update()方法,其使用方法在下列例子中说明;

    1 dic = {'name': 'colin', 'age': 27, 'sex': 'male'}
    第一种
    3 dic['age'] = 25  # {'name': 'colin', 'age': 25, 'sex': 'male'}
    4 print(dic)
    第二种  update()
    6 dic = {'name': 'colin', 'age': 27, 'sex': 'male'}
    7 dic2 = {'name': 'Jenny', 'weight': 75}
    8 dic.update(dic2)   # 将dic2中的所有键值对覆盖并添加到dic中,dic2不变
    9 print(dic)       # {'name': 'Jenny', 'age': 27, 'sex': 'male', 'weight': 75}

    此外,update()还有添加若干键值对的方法,如:

    1 dic2 = {'name': 'Jenny', 'weight': 75}
    2 # dic2.update(a = '222')
    3 # print(dic2)        # {'name': 'Jenny', 'weight': 75, 'a': '222'}
    4 dic2.update(a = '222', b = '666')
    5 print(dic2)       # {'name': 'Jenny', 'weight': 75, 'a': '222', 'b': '666'}

    字典的查询方法:

    字典的查询方法有get() ,keys(), value(), items()几种方法,其使用方法如下面代码:

    get()方法:

    1 dic = {'name': 'colin', 'age': 27, 'sex': 'male'}
    2 print(dic.get('name'))    # colin
    3 print(dic.get('name1'))    # None
    4 print(dic.get('name1', '没有此键...'))    # 没有此键...

    keys()方法:

    keys() 打印所有键, 其类型类似于列表的容器。

    1 dic = {'name': 'colin', 'age': 27, 'sex': 'male'}
    2 print(dic.keys(), type(dic.keys()))  # dict_keys(['name', 'age', 'sex']) <class 'dict_keys'>
    3 l1 = list(dic.keys())     # ['name', 'age', 'sex']  将类似列表的容器转化为列表类型
    4 print(l1)
    5 for key in dic.keys():   # 发现dic.key()可以遍历
    6     print(key)

    value()方法:

    value()  打印所有键值 ,其类型类似于列表的容器。

    1 dic = {'name': 'colin', 'age': 27, 'sex': 'male'}
    2 print(dic.values())   # dict_values(['colin', 27, 'male'])
    3 print(list(dic.values()))  # ['colin', 27, 'male']

    items()方法

    items() 按元组形式打印键值对。

    1 dic = {'name': 'colin', 'age': 27, 'sex': 'male'}
    2 print(dic.items())    # dict_items([('name', 'colin'), ('age', 27), ('sex', 'male')])
    3 print(list(dic.items()))  # [('name', 'colin'), ('age', 27), ('sex', 'male')]
    4 for i in dic.items():  #  ('name', 'colin') ('age', 27) ('sex', 'male')  即按元组形式打印键值对
    5     print(i)
    6 for k, v in dic.items():  #  name colin   age 27   sex male  # k,v分别代表键与值
    7     print(k, v)

    分别赋值:

     1 a, b = 10, 20
     2 print(a, b)   # 10 20
     3 a, b = [10, 20]
     4 print(a, b)   # 10 20
     5 a, b = [(1, 2), (3, 4)]
     6 print(a, b)   # (1, 2) (3, 4)
     7 a = 10
     8 b = 20
     9 a, b = b, a   # 赋值操作,先计算右边的赋值运算,再算左边的赋值操作
    10 print(a, b)   # 20 10

    每日一练:

     1 dic = {'name_list': ['王双', 'alex', '孙飞', 'taibai'],
     2        1: {'name': 'taibai', 'age': 18, 'sex': ''},
     3        (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]
     4        }
     5 # 1,给 name_list对应的列表追加一个值: 司徒大人.
     6 dic['name_list'].append('司徒大人')
     7 print(dic)
     8 # 2,将name_lsit对应的alex 变成全部大写.
     9 dic['name_list'][1] = dic['name_list'][1].upper()
    10 print(dic)
    11 # 3, 将1对应的字典添加一个键值对: weight : 75
    12 dic[1].setdefault('weight', 75)
    13 print(dic)
    14 # 4,将1 对应的字典的name键对应的名字taibai 换成alex
    15 dic[1]['name'] ='alex'
    16 print(dic)
    17 # 5,将 {'ip': '192.168.1.1', 'port': 3306} 次字典的port键值对删除.
    18 dic[(1, 2)][1].popitem()
    19 print(dic)
  • 相关阅读:
    codeforces-1139 (div2)
    codeforces-1140 (div2)
    codeforces-1141 (div3)
    第四届CCCC团体程序设计天梯赛 后记
    BZOJ 3674 可持久化并查集
    你能回答这些问题吗
    [JSOI2008]最大数
    关路灯
    愤怒的小鸟
    推销员
  • 原文地址:https://www.cnblogs.com/colin1314/p/9443012.html
Copyright © 2020-2023  润新知