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

    字典 dict

    定义

    由一系列键值对组成的可变散列容器。

    散列:每条记录无序。

    键必须惟一且不可变(字符串/数字/元组),值没有限制。

    字典内存图:

    基础操作

    创建字典:

    字典名 = {键1:值1,键2:值2}(键不能相同,值可以相同)

    字典名 = dict (可迭代对象)

    添加/修改元素:

    语法字典名[键] = 数据

    dict01["qtx"] = 100

    说明:

    键不存在,创建记录。

    键存在,修改映射关系。

    添加另一个字典

    dict={"a":22,"d":3,"c":33}
    dict01={"v":23,"y":3,"b":33}
    dict01.update(dict)#{'v': 23, 'y': 3, 'b': 33, 'a': 22, 'd': 3, 'c': 33}
    print(dict01)

    获取元素:变量 = 字典名[键]  # 没有键则错误

    遍历字典:

    for 键名 in 字典名:

    字典名[键名]

    for 键名,值名 in 字典名.items():

    遍历
    #得到的是键
    dict01={'a': 'b', 'c': 'd', 'qtx': 100, 'zc': 90}
    for key in dict01:
        print(key,)           #遍历键  a  c  qtx    zc 
        print(dict01[key])    #遍历值  b  d  100   90 
    
    # 得到的是键值对的元组
    for item in dict01.items():
        print(item[0])     #遍历键  a  c  qtx    zc
        print(item[1])     #遍历值  b  d  100  90
    
    for key,value in dict01.items():
      print(key)       #遍历键  a  c  qtx    zc
      print(value)     #遍历值  b  d  100  90
    
    
    # 获取所有值
    for value in dict01.values():
      print(value)     #遍历值  b  d  100  90
    dict={"a":22,"d":3,"c":33}
    #返回指定键的值,如果值不在字典中返回default值
    print(dict.get("aa"))#None
    print(dict.get(1))#None
    #和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
    print(dict.setdefault("a"))#22
    print(dict.setdefault("aa"))#None
    #以列表返回可遍历的(键, 值) 元组数组
    print(dict.items())#dict_items([('a', 22), ('d', 3), ('c', 33)])
    #返回一个迭代器,可以使用 list() 来转换为列表
    print(dict.keys())#dict_keys(['a', 'd', 'c'])
    #返回一个迭代器,可以使用 list() 来转换为列表
    print(dict.values())#dict_values([22, 3, 33])

    语句:删除元素:

    del 字典名[键]

    先判断元素是否在字典里
    if "xx" in dict01:
      del dict01["xx"]
    print(dict01)

    随机返回并删除字典中的一对键和值(一般删除末尾对)。

    print(dict.popitem())  #('aa', None)

    清除字典

    print(dict01.clear())  #清除None

    字典推导式

    定义:使用简易方法,将可迭代对象转换为字典。

    语法:

    {键:值 for 变量 in 可迭代对象}

    {键:值 for 变量 in 可迭代对象 if 条件}

    # 1 2 3 4 ... 10  -->  数:平方
    #传统式
    dict01 = {}
    for item in range(1, 10):
        dict01[item] = item ** 2
    print(dict01)
    #推导式
    dict02 = {item: item ** 2 for item in range(1, 10)}
    print(dict02)
    #{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

    字典 VS 列表

    都是可变容器。

    获取元素方式不同,列表用索引,字典用键。

    字典的插入,删除,修改的速度快于列表。

    列表的存储是有序的,字典的存储是无序的。

  • 相关阅读:
    xp 安装 win7 64
    局域网内传输文件速度慢
    安全和共享设置
    vs2005无法启动
    dos快速通道
    xp 共享 guest
    Java菜题
    Java序列化总结(最全)
    Bitset改进你的程序质量
    Java反射方法总结
  • 原文地址:https://www.cnblogs.com/maplethefox/p/10817112.html
Copyright © 2011-2022 走看看