• Python字典


    Python字典

    一、   创建字典

    字典是另一种可变容器模型,且可存储任意类型对象。

    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 。而且字典内的键值对是无序的。并不是你创建时什么样子print时就是什么样子,键值对的顺序可能会变。

    键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

    1.直接创建

    a={‘name’:‘tom’,age’:12,’hobby’:[‘sing’,swimming],’number_of_family’:{‘father’:‘dad’,‘mother’:‘mom’}}

    2.利用类创建

    1)利用元组创建

    b=dict((('name','tom'),('age',12)))       #利用元组创建

      print(b)                                              #{'name': 'tom', 'age': 12}

    2)利用列表创建

    c=dict([['name','tom'],['age',12]])                    #利用列表创建
    print(c)                                               #{'name': 'tom', 'age': 12}

    二、 字典的操作

    1.增

    1)直接增加

    c={'name': 'tom', 'age': 12}       #创建字典c

    c[‘mother’]=’mom’                    #增加[‘mother’: ’mom’]键值对

    print(c)                                    #{'mother': 'mom', 'age':12, 'name': 'tom'}

    2)使用setdefault

    Setdefault是又返回值的创建,可以返回增加键值对的键的值。创建的同时会检索原字典里是否已有该键值对,如果有则不再创建但可以返回键的值,如果没有则创建。且每次只能增加一个键值对,不能同时增加多个。

    d={'age': 12, 'name': 'tom'}             #创建字典d
    ret=d.setdefault('mother','mom')         #增加{'mother':'mom'}
    print(d)                                 #{'name': 'tom', 'mother':'mom', 'age': 12}
    print(ret)                               #  mom

    2.查

    1)直接查询

    d={'age': 12, 'name': 'tom'}          #创建字典d

       print (d[‘name’])                                         #  tom

    2)查询字典里所有的键名

    d={'age': 12, 'name': 'tom'}          #创建字典d
    print (list(d.keys()))                #通过用类创建列表的方法列出键名[ 'age', 'name']

    3)以列表嵌套元组的方式显示字典内容

    d={'age': 12, 'name': 'tom'}         #创建字典d

       print(list(d.items()))                                                      # [('age', 12), ('name', 'tom')]

    4)取出字典里的所有键值

    d={'age': 12, 'name': 'tom'}          #创建字典d

     print(list(d.values()))                                        # ['tom', 'mom', 12]

    3.改

    1)重新赋值

    d={'age': 12, 'name': 'tom'}        #创建字典d
    d[‘name’]=’jim’                     #将name的键值改为jim
    print(d)                            # {'name': 'jim', 'age': 12}

    2)update

    d={'age': 12, 'name': 'tom'}        #创建字典d
    e={‘mother’:’mom’}                  #创建字典e
    d.update(e)                         #将字典e加到字典d中
    print(d)                            # {'name': 'jim', 'mother':'mom', 'age': 12}

    4.删

    1)del

    d={'age': 12, 'name': 'tom'}        #创建字典d

        del d[‘name’]                                     #删除‘name’键值对

    print(d)                          # {'age': 12}
    del d                             #删除整个字典

    2)clear

    d={'age': 12, 'name': 'tom'}          #创建字典d

       d.clear()                                                  #清空字典d

       print(d)                                                   # {}

    3)pop

    Pop可以返回删除键值对的键值。

    d={'age': 12, 'name': 'tom'}       #创建字典d

    res=d.pop('name')                              #删除‘name’键值对

    print(res)                                             #输出删除键值对的键值‘tom’

    print('d=',d)                                         # {'age': 12}

    5.排序sorted

    Sorted()可以将数字按大小重新排列,也可以将字母按大写排在小写前的26个英文字母的顺序排列。如果是字符串则以首字母排列。(实质是按照ASCII码的排序从小到大排列,即数字<大写字母<小写字母)

    1)根据键名大小排序

    创建字典时键名可以是字符串(str)或整型(int),但排序时两者不能同时出现在同一字典里,否则会报错(TypeError: unorderable types: int() < str())。

    d={'b':'1','a':'2','3':'a','1':'b','D':'5'}              #创建字典d

    print(d)                                                      # {'3': 'a', 'a': '2', '1': 'b', 'D': '5', 'b': '1'}

    print('s=',sorted(d.items()))                        # s= [('1', 'b'), ('3', 'a'),('D', '5'), ('a', '2'), ('b', '1')]

    2)将键值按大小输出

    创建字典时键值可以是字符串(str)或整型(int),但排序时两者不能同时出现在同一字典里,否则会报错(TypeError: unorderable types: int() < str())。

    d={'b':'1','a':'2','3':'a','1':'b','D':'5'}              #创建字典d

    print(d)                                                      # {'3': 'a', 'a': '2', '1': 'b', 'D': '5', 'b': '1'}

    print('s=',sorted(d.values ()))                     # s= ['1', '5', 'A', 'a', 'b']

    6.字典遍历

    d={'b':'1','a':'A','3':'a','1':'b','D':'5'}                #创建字典d
    for i in d:                                                #开始遍历
        print(i,d[i])                                          # 3 a

                                        1 b                       
                                        b 1                        
                                        a A               
                                        D 5                        
    第二种方法:
    这种方法因为在输出前要转换所以如果字典内容比较多时会比较慢。
    d={'b':'1','a':'A','3':'a','1':'b','D':'5'}              #创建字典d
    for i ,v in d.items():                                   #开始遍历
        print(i,v)                                           # 3 a
                                       1 b                        
                                       b 1                        
                                       a A               
                                                               D 5
  • 相关阅读:
    洛谷.1110.[ZJOI2007]报表统计(Multiset Heap)
    洛谷.1110.[ZJOI2007]报表统计(Multiset)
    洛谷.3809.[模板]后缀排序(后缀数组 倍增) & 学习笔记
    洛谷.2801.教主的魔法(分块 二分)
    洛谷.2709.小B的询问(莫队)
    COGS.1901.[模板][国家集训队2011]数颜色(带修改莫队)
    COGS.1822.[AHOI2013]作业(莫队 树状数组/分块)
    COGS.1689.[HNOI2010]Bounce 弹飞绵羊(分块)
    COGS.264.数列操作(分块 单点加 区间求和)
    COGS.1317.数列操作c(分块 区间加 区间求和)
  • 原文地址:https://www.cnblogs.com/xshan/p/7357638.html
Copyright © 2020-2023  润新知