zoukankan      html  css  js  c++  java
  • python中的基本数据类型之字典

     一.字典的简单介绍

     字典是(dict)是python中惟一的一个映射类型,他是以{}括起来的键值对组成,在字典中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存保存在这个地址中,这种算法被称为hash算法,所以在字典中存储的key-value必须是可合适 hash的,(可以改变的都是不可hash的,hash意味着不可变)这是为了能够准确的计算内存地址而规定的.

    不可变的数据类型:int,str,tuple,bool

    可变的数据类型:list,dict,set

    value没有要求,可以保存任意类型的数据.

    1 dic={132:45,True:999,'ig':1,(1,2,3):'nje'}
    2 print(dic)
    3 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}

    语法:{key1:value1,key2:value2......}  

    1 dic={132:45,True:999,'ig':1,(1,2,3):'nje'}
    2 print(dic)
    3 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}

    二,字典的增删改查和其他操作

     1.增加

    1.1 dic['key']='value'  

    1 dic={132:45,True:999,'ig':1,(1,2,3):'nje'}
    2 print(dic)
    3 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
    1.2
     1  ⑴dic.setdefault('key')           #往字典里添加一个key,value默认为None,如果key已经存在,不会起任何作用
     2     ⑵dic.setdefault('key','value')   #往字典里添加一个key-value
     3   dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
     4   dic.setdefault('李嘉诚')
     5   print(dic)
     6   #{132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje', '李嘉诚': None}      #(1)
     7 
     8   dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
     9   dic.setdefault('李嘉诚','房地产')
    10   print(dic)
    11   # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje', '李嘉诚': '房地产'}    #(2)
    12  
    13   dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
    14   dic.setdefault(132,'房地产')
    15   print(dic)
    16   # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}      #如果key已经存在,不会起任何作用

    2.删除

    2.1 dic.pop('key')
    
    
    dic.pop('key')
      dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
      ret=dic.pop(132)       #通过key删除  返回被删除的value
      print(ret)             #如果key不存在会报错
      print(dic)
      # 45
      # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
    2.2 del dic['key']  
    1 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
    2   del dic[132]
    3   print(dic)
    4   # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
    2.3 dic.popitem()  
    1 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
    2   del dic[132]
    3   print(dic)
    4   # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
    2.4 dic.clear()  
    1 dic = {132: 45, True: 999, 'ig': 1,132:'gu',(1, 2, 3): 'nje'}
    2   dic.clear()
    3   print(dic)
    4   # {}           #得到的是一个空的字典

    3.修改

    3.1
    1 dic[key]=value 强制修改
    2   dic = {132: 45, True: 999, 'ig': 1,132:'gu',(1, 2, 3): 'nje'}
    3   dic[132]=789
    4   print(dic)
    5   # {132: 789, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
    
    
    3.2 dic1.update(dic)
    1 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'}
    2 dic1={1:'a',2:'b',132:46}
    3 dic.update(dic1)     #把dic 1中的内容更新到dic中,如果key重复,则修改替换,如果key不存在,就新增.
    4 print(dic)
    5 # {132: 46, '地方规划局': 999, 'ig': 1, (1, 2, 3): 'nje', 1: 'a', 2: 'b'}

    4.查

    4.1 dic.get(key)

    
    
    1 dic.get(key)
    2   dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'}
    3   print(dic.get(13,'好像虎'))    #找不到key返回None,或者指定返回内容
    4   #好像虎
    
    
    4.2 dic[key]
    1 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'}
    2   print(dic[132])      #45
    3   print(dic[12])     #KeyError: 12   没有这个键的时候查询会报错
    4.3 for循环
    1 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'}
    2 for i in  dic:      #循环默认是去字典中的键
    3         print(i)
    4         # 132
    5         # 地方规划局
    6         # ig
    7         # (1, 2, 3)

    5.字典的其他操作

    5.1 keys();values();items()

    1 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'}
    2   print(dic.keys())  # (高仿列表)          高仿列表暂时可以当做真的列表用,也可以迭代
    3   print(dic.values())  # (高仿列表)
    4   print(dic.items())    #也是高仿的列表,只不过里面装的是元组
    5   # dict_keys([132, '地方规划局', 'ig', (1, 2, 3)])
    6   # dict_values([45, 999, 1, 'nje'])
    7   # dict_items([(132, 45), ('地方规划局', 999), ('ig', 1), ((1, 2, 3), 'nje')])
    5.2 解构(解包)
     1 a,b = '12'  #将后边解构打开按位置赋值给变量 支持  字符串 列表 元组
     2   print(a)
     3   print(b)
     4   # 1
     5   # 2
     6 
     7   dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
     8   for a,b in dic.items():
     9       print(a)
    10       print(b)
    11       # 易大师
    12       # 剑圣
    13       # 剑豪
    14       # 托儿所
    15       # 草丛伦
    16       # 大宝剑
    17 
    18   dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
    19   for key,value in dic.items():
    20       print(key,value)
    21   # 易大师 剑圣
    22   # 剑豪 托儿所
    23   # 草丛伦 大宝剑
    
    

    三,字典的嵌套

    1 dic = {'name':'汪峰','age':43,'wife':{'name':'国际章','age':39,'salary':100000},'baby':[{'name':'熊大','age':18},{'name':'熊二','age':15},]}
    2 
    3 dic['baby'][0]['age'] = 19
    4 print(dic)

     

    改变世界,改变自己!
  • 相关阅读:
    MySQL存储过程和函数
    MySQL数据类型
    MySQL—基础(SQL语句)
    如何将一串字符串按照某个特定的字符分割后倒叙输出,如:www.baidu.com输出为com.baidu.www
    JAVA WEB数据中文编码问题
    如何用一条SQL语句从登录日志表中查询统计出每个人登录的次数
    JAVA WEB tomcat启动关闭问题
    thinkphp知识点
    smarty模板内容
    smarty基础
  • 原文地址:https://www.cnblogs.com/shanghongyun/p/9399369.html
Copyright © 2011-2022 走看看