zoukankan      html  css  js  c++  java
  • Python:字典

    字典键的特性:

    (1)不允许同一个键出现两次:创建时如果同一个键被赋值两次,后一个值会覆盖前一个
    (2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行

    格式:d = {key1 : value1, key2 : value2 }

    字典创建:

    #元组列表形式创建字典:
    >>> dic1 = dict((['ip','127.0.0.1'],['port','8080']))
    >>> dic1
    {'ip': '127.0.0.1', 'port': '8080'}

    #列表元组形式创建字典:
    >>> dic2 = dict([('ip','192.168.1.1'),('port','443')])
    >>> dic2
    {'ip': '192.168.1.1', 'port': '443'}

    #表达式方式创建字典: 注意如果是字符串不能用这种方式创建!
    >>> dic3 = dict(x=10,y=20,z=30)
    >>> dic3
    {'z': 30, 'x': 10, 'y': 20}

    #**dic3方式创建字典
    >>> dic4 = dict(**dic3)
    >>> dic4
    {'z': 30, 'x': 10, 'y': 20}

    #fromkeys方式创建字典: 创建一个默认字典,字典中元素具有相同的value值
    >>> dic5 = {}.fromkeys(('x','y'),100)
    >>> dic5
    {'x': 100, 'y': 100}
    >>> dic6 = {}.fromkeys('x','y')
    >>> dic6
    {'x': 'y'}
    >>> dic7 = {}.fromkeys(['x','y'])
    >>> dic7
    {'x': None, 'y': None}
    >>> dic8 = {}.fromkeys('abcd','1')
    >>> dic8
    {'b': '1', 'c': '1', 'a': '1', 'd': '1'}

    字典访问:

    dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} 
    print ("dict['Name']: ", dict['Name'])
    print ("dict['Age']: ", dict['Age'])

    输出结果:

    dict1['Name']: Runoob
    dict1['Age']: 7

    修改字典:

    dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    dict1['Age'] = 8; # 更新 Age
    dict1['School'] = "菜鸟教程" # 添加新信息
    print ("dict['Age']: ", dict['Age'])
    print ("dict['School']: ", dict['School'])

    输出结果:

    dict1['Age']: 8
    dict1['School']: 菜鸟教程

    字典删除:

    >>> dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    >>> dict1.pop('Age')   #删除某个键值
    >>> dict1
    {'Class': 'First', 'Name': 'Runoob'}
    >>> del dict1['Name']   #删除某个键值
    >>> dict1
    {'Class': 'First'}
    >>> dict1.clear()   #清空字典
    >>> dict1
    {}
    >>> del dict1   #删除整个字典
    >>> del dict1
    >>> dict1
    Traceback (most recent call last):
      File "<pyshell#96>", line 1, in <module>
        dict1
    NameError: name 'dict1' is not defined

    字典遍历:

    例1:在遍历时,可以用enumerate()得到索引位置

    dict1 = {'name': 'pingy', 'age': 30}
    for k, v in dict1.items():
        print(k, v)

    输出结果:

    name pingy
    age 30

    例2:遍历技巧,新添加索引位置

    for i, v in enumerate(['tic', 'tac', 'toe']):
        print(i,v)

    输出结果:

    0 tic 
    1 tac
    2 toe

    例3:

    questions = ['name', 'quest', 'favorite color']
    answers = ['lancelot', 'the holy grail', 'blue']
    for q, a in zip(questions, answers):
        print('[%s]:[%s]'%(q,a))

    输出结果:

    [name]:[lancelot]
    [quest]:[the holy grail]
    [favorite color]:[blue]

    字典内置函数:

    len(dict)  #计算字典元素个数,即键的总数
    str(dict)  #输出字典以可打印的字符串表示
    >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    >>> str(dict)
    "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
    
    .clear()  #删除字典内所有元素
    .copy()  #返回一个字典的浅复制
    .fromkeys()  #创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    .get(key,default=None)  #返回指定键的值,如果值不在字典中返回default值
    .items()  #以列表返回可遍历的(键,值)元组数组
    .keys()  #以列表返回一个字典所有的键
    >>> d1 = {'addr':{'ip':127.0.0.1,'port':80},'msg':18}
    >>> d1.keys()
    dict_keys(['msg', 'addr'])
    
    .values()  #以列表返回字典中的所有值
    >>> d1 = {'addr':{'ip':127.0.0.1,'port':80},'msg':18}
    >>> d1.values()
    dict_values([19, {'ip': '127.0.0.1', 'port': 80}])
    
    .setdefault(key, default=None)  #和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
     >>> d1 = {'1':'one','2':'two'}
      >>> d1.setdefault('1','ONE')
      'one'
      >>> d1
      {'1':'one','2':'two'}   #由于键1已经存在,则不会修改
      >>> d1.setdefault('0','zero')   #键0不存在,则会追加到字典中
      'zero'
      >>> d1
      {'0': 'zero', '1': 'one', '2': 'two'}
    
    .update() #把字典dict2的键/值对更新到dict里
    >>> a = {'a':1, 'b':2}
    >>> a.update({'c':3})
    >>> a
    {'a': 1, 'c': 3, 'b': 2}
    >>> a.update({'c':4})
    >>> a
    {'a': 1, 'c': 4, 'b': 2}
    例:
    >>> for i in reversed(range(1, 10, 2)):
            print(i)
    
    输出结果:
    9
    7
    5
    3
    1
    例:
    >>> l1=[1,2,3]
    >>> l2=['a','b','c']
    dict(map(lambda x,y:[x,y], l1,l2))
    
    输出结果:
    {1: 'a', 2: 'b', 3: 'c'}
  • 相关阅读:
    2021.4.2 Python基础及介绍
    2021.4.1 团队组队
    冲击信号
    信号卷积(线性卷积)
    数字图像处理基本概念
    计算机视觉发展及主要研究方向
    SVM 之 SMO 算法
    FP Growth 算法
    Apriori 算法
    26 实战页式内存管理 下
  • 原文地址:https://www.cnblogs.com/ping-y/p/5827040.html
Copyright © 2011-2022 走看看