zoukankan      html  css  js  c++  java
  • 字典

      1 # 概述:使用键-值(key-value)方式存储。
      2 # key的特点:
      3 # 1、字典中的key必须是唯一的
      4 # 2、key值必须是不可变的数据类型:字符串、元组、Number
      5 # 3、list是可变的,不能作为key值使用
      6 # 4、value:可以是任意类型的数据,可以重复。
      7 # 本质:一种无序的、可变的集合。
      8 
      9 # 学生: 学号 姓名 性别 年龄 联系方式
     10 # [001, lily, girl, 12, 1234]
     11 # [002, lucy, 13, boy, 1234]
     12 
     13 # 一、创建字典
     14 # 语法格式:字典名 = {key1 : value1, key2 : value2, ......}
     15 # 1、创建一个空字典
     16 dict1 = {}
     17 print(dict1)
     18 print(type(dict1)) # dict
     19 # 2、创建一个带有键值对的字典 姓名 年龄
     20 dict2 = {"lily": 28, "lucy": 26, "lilei": 22}
     21 print(dict2)
     22 print(type(dict2)) # dict
     23 dict3 = {"lily": 23}
     24 print(type(dict3)) # dict
     25 
     26 # 3、验证key的规则
     27 # 3.1、Number是否可以做key值 可以
     28 dict4 = {1: "abc"}
     29 print(dict4)
     30 # 3.2、String是否可以做key值 可以
     31 dict5 = {"abc": "def"}
     32 print(dict5)
     33 # 3.3、Tuple是否可以做key值 可以
     34 dict6 = {(1, 2): "qq&wx"}
     35 print(dict6)
     36 # 3.4、List是否可以做key值 不可以
     37 # dict7 = {[1, 2]: "qqqqqq"}
     38 # print(dict7) # TypeError: unhashable type: 'list'
     39 # 3.5、Dict是否可以做key值 不可以
     40 # dict7 = {{1: "abc"}: "qqqqqq"}
     41 # print(dict7) # TypeError: unhashable type: 'dict'
     42 # 3.6、Bool是否可以做key值 可以 很少使用该方式作为key值
     43 dict8 = {True: "qq&wx"}
     44 print(dict8)
     45 dict8 = {None: "qq&wx"}
     46 print(dict8)
     47 
     48 # dict9 = {(1,2,[3,4]): "qq&wx"}
     49 # print(dict9) # 错误
     50 
     51 # 3.7、字典中的key必须是唯一的
     52 # 创建时可以出现重复的key,但最后指挥保留最后一次的value值。
     53 dic = {"a": 1, "b": 2, "c": 3, "d": 4, "a": 100}
     54 print(dic)
     55 
     56 # 4、验证value的规则
     57 # value:python是支持的数据类型均可以
     58 dict11 = {1: 123, 2: "abc", 3: None, 4: True, 5: (1,2,3), 6: [1,2,3,4],
     59 7: {"a": 1}, 8: 3.14}
     60 print(dict11)
     61 
     62 
     63 # 二、字典的访问
     64 # 1、获取字典的元素方式1 : 字典名[key]
     65 # 注:当key值不存在时,返回一个错误
     66 dic12 = {"a": 1, "b": 2, (1, 2): 3, 123: 4}
     67 print(dic12["b"])
     68 print(dic12[123])
     69 print(dic12[(1, 2)])
     70 # print(dic12["abc"]) # KeyError: 'abc'
     71 
     72 # 2、获取字典的元素方式2 : 字典名.get(key)
     73 # 注:当key值不存在时,返回None
     74 print(dic12.get("b"))
     75 print(dic12.get(123))
     76 print(dic12.get((1, 2)))
     77 print(dic12.get("abcdef")) # None
     78 
     79 if dic12.get("abcdef") == None:
     80 print("无值")
     81 else:
     82 print(dic12.get("abcdef"))
     83 
     84 
     85 # 三、字典的操作
     86 dic = {"a": 1, "b": 2, "c": 3, "d": 4}
     87 # 1、增 格式:字典名称[新的key值] = 新的value值
     88 print(dic)
     89 dic["e"] = 5
     90 print(dic)
     91 
     92 # 2、删 格式:字典名称.pop(key值)
     93 # 注:key值被删除时,value值也一起被删掉
     94 # 如果key值不存在,删除时报错
     95 dic.pop("b")
     96 print(dic)
     97 # dic.pop("f") # KeyError: 'f'
     98 # print(dic)
     99 
    100 # 3、改 格式:字典名称[key值] = 新的value值
    101 dic["a"] = 100
    102 print(dic)
    103 
    104 # 4、查
    105 print(dic["d"])
    106 print(dic.get("e"))
    107 
    108 # 5、其他
    109 # 5.1、获取键值对个数 len(dict)
    110 print(len(dic))
    111 
    112 
    113 # 四、字典的遍历
    114 dic = {"a": 1, "b": 2, "c": 3, "d": 4}
    115 # 1、遍历 for in
    116 for key in dic:
    117 print(key)
    118 print(dic[key])
    119 # 2、字典名.keys() : 返回字典中所有的key值(列表类型)
    120 print(dic.keys()) # dict_keys(['a', 'b', 'c', 'd'])
    121 keyList = dic.keys()
    122 for key in dic.keys():
    123 print(key)
    124 print(dic[key])
    125 
    126 # 3、字典名.values() : 返回字典中所有的value值(列表类型)
    127 print(dic.values()) # dict_values([1, 2, 3, 4])
    128 for v in dic.values():
    129 print(v)
    130 # 4、字典名.items() : 返回字典中所有的key及value值(列表类型,列表
    131 # 中的元素为元组类型,元组的第一个元素为key,第二个元素为value)
    132 print(dic.items()) # dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
    133 for ii in dic.items():
    134 print(ii)
    135 
    136 for key, value in dic.items():
    137 print(key, value)
    138 
    139 # ValueError: too many values to unpack (expected 2)
    140 # ValueError: not enough values to unpack (expected 3, got 2)
    141 # 注: for后面的变量个数与元组中的个数一致
    142 list1 = [('a', 1, "qq"), ('b', 2, "ww"), ('c', 3, "rr"), ('d', 4,"yy")]
    143 for i,j,k in list1:
    144 print(i,j,k)
    145 
    146 
    147 '''
    148 dict:
    149 1、查找及插入速度快,不会随着key及value的增加而变慢
    150 2、需要占用的内存大,内存浪费多
    151 list:
    152 1、查找及插入速度会随着数据的增加而变慢
    153 2、需要占用的内存小,内存浪费少
    154 '''
    155 
    156 # 五、仿照json大量数据
    157 dic1 = {"a": [1,2,3]}
    158 print(dic1["a"][2])
    159 
    160 dic2 = {"a" : {1:"qq", 2:"wx"}}
    161 print(dic2["a"][2])
    162 
    163 li1 = [{"a":1},{"a":2}]
    164 print(li1[1]["a"])
    165 for i in li1:
    166 print(i["a"])
    167 
    168 
    169 li2 = [{"appname":"123", "price":12, "dateTime":"2019-1-2"},
    170 {"appname": "456", "price": 15, "dateTime": "2019-1-5"}]
    171 
    172 dic4 = {"app":"时光",
    173 "time": "2017-5-16",
    174 "des":{"jm":"12345",
    175 "xm": "1234567890"}}
    176 print(dic4["des"]["xm"])
  • 相关阅读:
    ImageLightbox.js – 响应式的图片 Lightbox 插件
    精美素材:10套最新出炉的免费扁平图标下载
    盘点2013年那些最优秀的网页设计作品【系列三】
    12个带给你惊喜用户体验的手机界面设计
    一款效果精致的 jQuery 多层滑出菜单插件
    创意无限:20幅惊人的霓虹灯摄影照片欣赏
    『设计前沿』14款精致的国外 iOS7 图标设计示例
    2013年值得我们学习的网页设计作品【系列二】
    Summernote – 基于 Bootstrap 的文本编辑器
    『摄影欣赏』2013年微软必应搜索十大首页美图
  • 原文地址:https://www.cnblogs.com/BKY88888888/p/11252555.html
Copyright © 2011-2022 走看看