• 写给小白的Python之009:数据类型之字典


    导读:

    1.字典

    字典(dictionary)是Python中另一个非常有用的内置数据类型。 在其他语言中也称为 map。字典是一种映射类型(mapping type),它是一个无序的键 : 值对集合。关键字必须使用不可变类型,也就是说list和包含可变类型的tuple不能做关键字。在同一个字典中,关键字还必须互不相同。
    字典是一个无序的数据集合,使用print函数输出字典时,通常输出的顺序和定义的顺序是不一致的!

    >>> dic = {} # 创建空字典
    >>> tel = {'Jack':1557, 'Tom':1320, 'Rose':1886}
    >>> tel
    {'Tom': 1320, 'Jack': 1557, 'Rose': 1886}

    1.取值

    >>> tel['Jack'] # 主要的操作: 通过key查询,若不存在则报错1557

    在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:

    >>> age = info.get('age')
    >>> age #'age'键不存在,所以age为None
    >>> type(age)
    <type 'NoneType'>
    >>> age = info.get('age', 18) # 若info中不存在'age'这个键,就返回默认值18
    >>> age
    18

    2.增加/修改

    >>> tel['Mary'] = 4127 # 若key不存在,则新增键值对;如存在,则修改键值对

    3.删除

    >>> tel.pop("Rose") # 删除一个键值对,若key不存在则报错.推荐使用
    >>> del tel['Rose'] # 删除一个键值对

    4.清空字典

    >>> tel.clear()
    >>> del tel[[key]]. # 删除指定的元素或删除整个字典

    5.合并字典

    >>> ful = {"hary": 3452,
    "leo": 4237}
    # 注意:如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
    >>> tel.update(ful)

    6.字典.keys()方法

    返回一个包含字典所有KEY的列表.

    >>> tel
    {'Tom': 1320, 'Jack': 1557, 'Mary': 4127}
    >>> list(tel.keys()) # 返回所有key组成的list
    ['Tom', 'Jack', 'Mary']
    >>> sorted(tel.keys()) # 按key排序
    ['Jack', 'Mary', 'Tom']

    7.字典.values()

    返回一个包含字典所有value的列表.

    >>> tel.values()
    [1320, 1557, 4127]

    8.字典.items()

    返回一个包含所有(键,值)元组的列表。

    >>> tel.items()
    [('Tom', 1320), ('Jack', 1557), ('Mary', 4127)]

    9.len()

    测量字典中,键值对的个数

    >>>len(tel)
    3

    10.字典.has_key()(Python3 已取消)

    dict.has_key(key)如果key在字典中,返回True,否则返回False。

    >>> tel.has_key('Jack')
    True

    11.成员测试

    >>> 'Tom' in tel # 成员测试
    True
    >>> 'Mary' not in tel # 成员测试
    False

    12.字典遍历

    dict = {"name": "小明",
        "qq": "123456",
        "phone": "10086"}
    # 迭代遍历字典
    # 变量k是每一次循环中,获取到的键值对的key
    for k in dict:
    print("%s - %s" % (k, dict[k]))

    提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多。
    <1> 遍历字典的key(键)

    <2> 遍历字典的value(值)

     

    <3> 遍历字典的项(元素)

     

    <4> 遍历字典的key-value(键值对)

     

    13.构造函数dict()

    构造函数 dict() 直接从键值对sequence中构建字典,当然也可以进行推导,如下:

    >>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
    {'jack': 4098, 'sape': 4139, 'guido': 4127}
    >>> {x: x**2 for x in (2, 4, 6)}
    {2: 4, 4: 16, 6: 36}
    >>> dict(sape=4139, guido=4127, jack=4098)
    {'jack': 4098, 'sape': 4139, 'guido': 4127}

    14.应用场景

    尽管可以使用 for in 遍历字典,但是在开发中,更多的应用场景是:使用 多个键值对,存储 描述一个 物体 的相关信息 —— 描述更复杂的数据信息;
    将 多个字典 放在 一个列表 中,再进行遍历,在循环体内部针对每一个字典进行 相同的处理。

    card_list = [
        {"name": "张三",
        "qq": "12345",
        "phone": "110"},
        {"name": "李四",
        "qq": "54321",
        "phone": "10086"}
    ]
    for card_info in card_list:
        print(card_info)

    输出:
    {'name': '张三', 'qq': '12345', 'phone': '110'}
    {'name': '李四', 'qq': '54321', 'phone': '10086'}

    15. 和 list 比较, dict 有以下几个特点:

    1. 查找和插入的速度极快,不会随着 key 的增加而增加;
    2. 需要占用大量的内存,内存浪费多。
    而 list 相反:
    1. 查找和插入的时间随着元素的增加而增加;
    2. 占用空间小,浪费内存很少


    要点:

    1、字典是一种映射类型,它的元素是键值对。
    2、字典的关键字必须为不可变类型,且不能重复。
    3、创建空字典使用{ }。



  • 相关阅读:
    深度学习的优化算法
    基于双向的CNN的细粒度物体识别论文翻译
    LSTM公式推导
    结巴分词python脚本
    eval() python 中的
    C++编译原理
    extern,以及在linux头文件中的应用
    iostream源码
    LINUX命令
    apt-get
  • 原文地址:https://www.cnblogs.com/salmond/p/8776709.html
Copyright © 2020-2023  润新知