• 08 python 初学(字典)


    字典是 python 中唯一的映射类型 。采用键值对(key-value)的形式存储数据。

    python 对 key 进行哈希函数运算,根据计算的结果决定 value 的存储地址,所以字典时无需存储的,且 key 必须是可哈希的。可哈希表示 key 必须是不可变类型,如:数字、字符串、元组。

    字典是除列表之外 python 之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取

    字典两大特点:无序,键唯一

    遇到字典就是键,遇到列表就是位置

    声明:

    dic1 = {'name': 'lily', 'age': '18'}
    # 第二种创建方式
    dic2 = dict((('name','lily),))

    输出内存地址:id()函数

    a = 10
    print(id(a))
    b = a
    print(id(b))
    b = 15
    print(id(b))
    
    输出:
    140716292682864
    140716292682864
    140716292683024

    不可变类型:整型、字符串、元组

    可变类型:列表、字典


    字典的操作:

    增:

    dic1 = {'name': 'lily'}
    dic1['age'] = 18
    print(dic1)
    >>>{'name': 'lily', 'age': 18}
    dic1.setdefault('age', 34)  # 如果这个键有,不做任何变动;如果没有添加进去
    print(dic1)
    >>>{'name': 'lily', 'age': 18}

    查:

    print(dic1['name'])  # 查,通过键去寻找
    print(dic1.keys())  # 拿出所有的键
    print(dic1.values())  # 拿出所有的值
    print(dic1.items())  # 拿出所有的键值对
    
    # 输出:
    lily
    dict_keys(['name', 'age'])
    dict_values(['lily', 18])
    dict_items([('name', 'lily'), ('age', 18)])

    改:

    dic1['name'] = 'mylily'  # 通过键去改变值
    print(dic1)
    dic2 = {1: 111, 2: 222}
    dic1.update(dic2)  # 把dic2中的内容加入dic1,如果有相同的键,会对值做一个更新
    print(dic1)
    print(dic2)
    # output:
    {'name': 'mylily', 'age': 18}
    {'name': 'mylily', 'age': 18, 1: 111, 2: 222}
    {1: 111, 2: 222}

     删:

    del dic1['name']
    print(dic1)
    >>>{'age': 18, 1: 111, 2: 222}
    
    # 清空字典,字典是空的;相比 del dic1,是删除字典,字典不存在了,print会报错
    dic1.clear()
    print(dic1)
    >>>{}
    
    # 删除指定键值对,并返回该键值对的值
    print(dic1.pop('name'))
    >>>mylily
    
    # 随即删除一组键值对
    a = dic1.popitem()
    print(a, dic1)
    >>>(2, 222) {'name': 'mylily ', 'age': 18, 1: 111}

     字典其他操作以及涉及到的方法:

    # 另一种字典声明方式,不常用。后面作为一个统一的值赋给每一个键
    dic3 = dict.fromkeys(['host1', 'host2', 'host3'], 'test')
    print(dic3)
    # >>>{'host1': 'test', 'host2': 'test', 'host3': 'test'}

    字典的嵌套:

    school = {
        '初一': {
            '一班': ['hong', 'su', 'lily'],
            '二班': ['gang', 'ming']
        },
        '初二': {
            '一班': ['ququ', 'xiaoming']
        },
        '初三': 42
    }
    school['初一']['一班'][2] = 'mylily'
    print(school)
    # {'初一': {'一班': ['hong', 'su', 'mylily'], '二班': ['gang', 'ming']}, '初二': {'一班': ['ququ', 'xiaoming']}, '初三': 42}

    字典的排序:对整个字典排序是对键来排序; 如果要对值进行排序可以sorted(sorted_dic.values());如果是sorted(sorted_dic.items()),则是输出排序后的每个键值对,但顺序也是按照键来排序的

    sort_dic = {0: 555, 2: 222, 1: 111}
    print(sorted(sort_dic))
    # >>>[0, 1, 2]

    字典的遍历:如果要得到键和值,推荐使用第一种方式,效率比较高。第二种方式 item 转换成列表的时间远超过通过索引查值

    for i in sort_dic:
        print(i)  # 输出的 i 是键
    for i in sort_dic.items():
        print(i)
    # (0, 555)
    # (2, 222)
    # (1, 111)
  • 相关阅读:
    《Linux C编程一站式学习》第5章深入理解函数课后作业
    《Linux C编程一站式学习》——常量、变量和表达式notes
    《Linux C编程一站式学习》——第一个程序HelloWorld.c
    二分排序java实现
    leetcode初级算法(数组)——从数组中删除重复项
    利用层次遍历原理构建二叉树
    canvas学习笔记:绘制各种图形
    获取字符串长度【把双字节的替换成两个单字节的然后再获得长度
    oracle PLSQL程序造数据笔记
    oracle取一条记录中多个列的最大值和最小值
  • 原文地址:https://www.cnblogs.com/mlllily/p/10147199.html
Copyright © 2020-2023  润新知