zoukankan      html  css  js  c++  java
  • python 05 字典

    [TOC]

    字典——dict { }

    字典是无序,可变的数据类型。

    字典:用于存储数据,存储大量数据,字典要比列表快;将数据和数据之间进行关联。

    1. 定义:

     dic = {键:值,键:值}  #每个 键值对 以逗号分隔成一个元素

    字典的值: 可以是任意的数据类型。

    字典的键:必须是可哈希的——不可改变的数据类型;要求键唯一,如果有重复的,则后面的值会把前面的值覆盖掉。

    (注:可哈希的 -- 不可变的数据类型(数字、字符串、布尔值) -- 避免哈希冲突使用了 “开放寻址法” )

    (不可哈希的 -- 可变的数据类型 (列表、字典) )

    2. 增:

     dic = {"a":10,"b":20,"c":30}
     
     dic["键"] = 值  # 暴力添加
     dic["d"] = 40
     
     dic.setdefault(键,值)  # 通过键去字典中查询,如果键不存在执行添加,如果键存在则不会添加
     dic.setdefault("c",40)    # "c" 存在,不添加
     dic.setdefault("f",40)    # "f"不存在,添加到字典

    3. 删:

     del dic["a"]    # 通过字典的键,删除键值对
     dic.pop("b")    # 通过字典的键,删除键值对,有返回值,返回的是被删除的值
     dic.clear()     # 清空字典

    4. 改:

     dic["b"] = 200   #字典中没有此键值对的时候就是添加,当键在字典中存在的时候就是修改    # "有则改,无则加"
     dic.update(dic1) # 更新,里面必须放字典。update括号中的字典(dic1)级别高于前面的字典(dic)
                      # 运行:先将具有相同键的内容覆盖,再在字典末尾添加dic没有的键值对

    5. 查:

     for i in dic:
         print(i)     # for 循环获取的是键值对的键
     
     dic.get(键)    # 通过键获取值,如果键不存在字典中会返回 None
     dic[键]        # 通过键获取值,如果键不存在字典中会报错!

    6. 其他操作:

     dic = {"a":1,"b":2,"c":3}
     
     # 1.
     for i in dic:
         print(i,dic.get(i))   # 循环输出所有的键和值 a 1   b 2   c 3
     
     # 2. keys() 所有的键
     print(dic.keys())  # 高仿列表,获取的是字典中所有的键   -- dict_keys(['a', 'b', 'c']) 支持for循环 不支持索引
     
     for i in dic.keys():
         print(i)        # 循环输出所有的键 a b c
         
     print(dic.keys()[0]) # 报错 'dict_keys' object does not support indexing(不支持索引)
     
     # 3. values() 所有的值
     print(dic.values())  # 高仿列表,获取的是字典中所有的值 ——dict_values([1, 2, 3])
     print(list(dic.values()))   # 获取的是字典中所有的值,转换成 真的列表
     
     # 4. items() 所有的键和值
     print(dic.items())  # 高仿列表,获取的是字典中所有的键和值,存放在元组中 ——dict_items([('a', 1), ('b', 2), ('c', 3)])
     
     for i in dic.items():
         print(i[0],i[1])  #将键和值从元组中循环打印出 a 1   b 2   c 3
     
     # 5. 将字典中的值放到列表中
     lst = []
     for i in dic:
         lst.append(dic[i])
     print(lst)

    7. 解构:

     a = 10
     b = 20
     a,b = b,a
     print(a,b)   # 实现a,b数字的交换,列表、元组都可以
     
     a,_,b = (3,4,5)
     print(a,b)   # 3 5 等号后边的值和前面的变量名要一一对应(假如只要a,b)
     
     a = 10,12  # 本质就是一个元组
     print(a)   # (10,12)
     
     a,b = "23"
     print(a,b)   # 2 3
     
     a,b = {"1":"a","2":"b"}
     print(a,b)    #输出 1 2(键)
     
     for i in dic.items():
         print(i)    # 获取的是每个元素,结果:(键,值)
         
     for k,v in dic.items():
         print(k,v)    # 获取每个元素的键和值

    8. 字典的嵌套:

    查找的时候一次一次的通过键查找。

    dic[键]

     dic = {1001:["周杰伦","林俊杰"],
            1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}}}
     print(dic[1002]["汪峰"]["前妻2"][1])   # 熊二

     

  • 相关阅读:
    [haoi2015]T1
    [haoi2014]走出金字塔
    [haoi2014]穿越封锁线
    [haoi2014]遥感监测
    [haoi2012]高速公路
    [haoi2012]容易题
    [haoi2008]排名系统
    【bzoj1014】[JSOI2008]火星人prefix
    0916解题报告
    生成树计数问题
  • 原文地址:https://www.cnblogs.com/yzm1017/p/11166485.html
Copyright © 2011-2022 走看看