zoukankan      html  css  js  c++  java
  • 字典

    一. 字典

    字典的键必须是不可变的, 是可哈希的, 可以用数字, 字符串, 元组, 布尔值, 不可用列表, 字典, 集合. 值可以取任何数据类型. 

    键必须是唯一的. 

    字典的元素是按照哈希表的顺序保存的, 而哈希表不是连续的, 字典不能切片, 只能通过键来获取. 

    二. 字典的操作:

    dic = {1: '1', 2: '2', "3": 3, 4: 4, 5: 5}

    dic["6"] = 6                         如果键已存在, 变为修改值

    dic.setdefault(7, 7)

    dic.setdefault(8)                 这个键的值是None

    dic.setdefault(1, 3)             键已经存在, 不会采取操作

    dic.setdefault(1: 3)             这样会报错

    dic.pop(1)                       返回key 1的值, 不存在会报错

    del dic["3"]                      不存在会报错

    dic.popitem()                  随机删除

    dic.clear()                       清空字典

    dic["3"] = 100            如果键不存在会添加

    dic2 = {1:100, 9:900}

    dic.update(dic2)            dic2中的键值对会替换dic中的键值对, 同时dic中没有的dic2的键值对会添加到dic中

    print(dic[1])

    print(dic.setdefault(1))                  不存在键会输出None

    print(dic[99])                                 不存在键会报错

    print(dic.get(1))

    print(dic.get(99))                           None

    print(dic.get(99, "dsfjhkau"))         输出dsfjhkau

    嵌套

    dic = {1:1, 2:2, 3:{4:4, 5:5, 6:{7:7, 8:8}, 9:9}, 10:10}

    print(dic[3][6][7])                                                   输出7

    print(dic.get(3).get(6).get(7))                                输出7, 如果第一个get输出None, 对None用get查询会报错

      print(dic.get(3).get(6).get(99, "adjksas"))              输出adjksas

    其他

    print(dic.keys())       键的高仿列表

    print(dic.values())    值的高仿列表

    print(dic.items())      元组形式的键值对的高仿列表

    a, b = "12"               将字符串12解构打开, 按位置赋值给a, b

    a, b = (1, 2)

    a, b = [1, 2]

    print(a)

    print(b)

     

    for a, b in dic.items():

        print(a)

        print(b)

    dic = {}

    dics = dic.fromkeys([1,2,3],'abc')

    print(dics)

    dic = dict.fromkeys("12")

    print(dic)                                                 输出{'1': None, '2': None}

  • 相关阅读:
    day30---多态与鸭子类型
    day---30 Mixins机制与重用父类功能的两种方式
    day29---面向对象编程之继承
    day---28 作业
    day28---面向对象之封装
    day27----作业
    day---27面向对象编程与类
    day26---ATM+购物车
    day25---软件设计的3层架构
    day24---RE模块部分整理
  • 原文地址:https://www.cnblogs.com/NachoLau/p/9400100.html
Copyright © 2011-2022 走看看