zoukankan      html  css  js  c++  java
  • Python基础(二)之数据类型和运算(7)——字典

    字典

    字典在某些语言中可能称为 联合内存 ( associative memories )或 联合数组 ( associative arrays )。序列是以连续的整数为索引,与此不同的是,字典以 关键字 为索引,关键字可以是任意不可变类型,通常用字符串或数值。如果元组中只包含字符串和数字,它可以做为关键字,如果它直接或间接的包含了可变对象,就不能当做关键字。不能用列表做关键字,因为列表可以用索引、切割或者 append()extend() 等方法改变。

    理解字典的最佳方式是把它看做无序的键: 值对 (key:value 对)集合,键必须是互不相同的(在同一个字典之内)。

    1 info = {
    2     'stu1101': "TengLan Wu",
    3     'stu1102': "LongZe Luola",
    4     'stu1103': "XiaoZe Maliya",
    5 }

     字典的特性:

    • dict是无序的
    • key必须是唯一的,so 天生去重

    基本功能

    查找value:

    #索引
    print( info['stu1101'] )  #key中存在时显示value,如果key不存在则报错
    >>>TengLan Wu
    print(info.get('stu1102')) #常用这个,key不存在时返回None,而不是报错
    >>>TengLan Wu

    print(info.get('stu1106'))  
    >>>None

    查找key:

    >>> "stu1102" in info #标准用法
    True

    修改:

    #修改
    info['stu1102'] = 'Alex li'
    print(info)
    
    >>>{'stu1101': 'TengLan Wu', 'stu1102': 'Alex li', 'stu1103': 'XiaoZe Maliya'}

    增加:

    # 增加
    info['stu1104'] = "Jack Wang"
    print(info)
    
    >>>{'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'Jack Wang'}

     删除:

    #删除
    del info['stu1101']
    print(info)
    
    >>>{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
    
    info.pop('stu1102')    #和del 相同
    print(info)
    
    >>>{'stu1101': 'TengLan Wu', 'stu1103': 'XiaoZe Maliya'}
    
    info.popitem()        #随机删除
    print(info)
    
    >>>{'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'}

    其他功能

    字典生成列表

    #key列表
    ret = info.keys()
    print(ret)
    #value列表
    ret = info.values()
    print(ret)
    #key-value列表
    ret = info.items()
    print(ret)
    
    >>>
    dict_keys(['stu1101', 'stu1102', 'stu1103'])
    dict_values(['TengLan Wu', 'LongZe Luola', 'XiaoZe Maliya'])
    dict_items([('stu1101', 'TengLan Wu'), ('stu1102', 'LongZe Luola'), ('stu1103', 'XiaoZe Maliya')])

     其他增加、修改字典的方法

    #setdefault
    
    >>> info.setdefault("stu1106","Alex")     #没有1106,就创建新的Key
    'Alex'
    >>> info
    {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
    >>> info.setdefault("stu1102","龙泽萝拉")   #存在1102,就不再创建,也不更改原有值
    'LongZe Luola'
    >>> info
    {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
    #update 
    >>> info
    {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
    >>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
    >>> info.update(b)
    >>> info
    {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}#存在的key,更新数据:不存在的Key,创建新数据
    #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
    c = dict.fromkeys([1,2,3],'testd')
    print(c)
    >>>{1: 'testd', 2: 'testd', 3: 'testd'}
    
    c[1] = "yang"
    print(c)
    >>>{1: 'yang', 2: 'testd', 3: 'testd'}
    
    
    
    d = dict.fromkeys([4,5,6],[1,{"name":"alex"},55])
    print(d)
    >>>{4: [1, {'name': 'alex'}, 55], 5: [1, {'name': 'alex'}, 55], 6: [1, {'name': 'alex'}, 55]}
    
    d[4][1]['name'] = "Yang"    #坑在此,浅拷贝
    print(d)
    >>>{4: [1, {'name': 'Yang'}, 55], 5: [1, {'name': 'Yang'}, 55], 6: [1, {'name': 'Yang'}, 55]}

      

    字典的循环

    #循环的是key
    for
    i in info: print(i) >>> #默认为输出KEY stu1101 stu1102 stu1103 #输出value,建议使用 for i in info: print(i,info[i]) >>> stu1101 TengLan Wu stu1102 LongZe Luola stu1103 XiaoZe Maliya #另一个输出value的方法,生成列表运行会慢 for k,v in info.items(): print(k,v) >>> stu1101 TengLan Wu stu1102 LongZe Luola stu1103 XiaoZe Maliya
  • 相关阅读:
    密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等
    |DataDirectory|的使用
    SqlParameter的作用与用法
    C# 通过http post 请求上传图片和参数
    webuploader批量导入文件
    MVC使用Controller完成登录验证
    网页特效 模板素材
    C#中的Cookie 添加 读取 删除
    JS jquery jquery.wordexport.js 实现导出word
    初始配置JDK
  • 原文地址:https://www.cnblogs.com/yz9110/p/8203689.html
Copyright © 2011-2022 走看看