• 字典


    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

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

    创建字典: 

    1 dic1={'name':'alex','age':36,'sex':'male'} 
    2 dic2=dict((('name','alex'),)) 
    3 print(dic1) 
    4 print(dic2) 

    对应操作:

    1 增

    dic3={} 
      
    dic3['name']='alex'
    dic3['age']=18
    print(dic3)  #{'name': 'alex', 'age': 18} 
      
    a=dic3.setdefault('name','yuan') 
    b=dic3.setdefault('ages',22) 
    print(a,b)    #alex 22   setdefault()  没有填充,有返回键所对应的值
    print(dic3)   #{'name': 'alex', 'age': 18, 'ages': 22}

    2 查

    dic3={'name': 'alex', 'age': 18} 
      
    # print(dic3['name'])   返回 alex
    # print(dic3['names'])  报错 没有“names”这个键
    # 
    # print(dic3.get('age',False)) # 18  返回age对应的值
    # print(dic3.get('ages',False)) #返回 False 没有键值对并返回
      
    print(dic3.items()) #dict_items([('name', 'alex'), ('age', 18)])
    print(dic3.keys()) #dict_keys(['name', 'age'])
    print(dic3.values()) #dict_values(['alex', 18])
      
    print('name' in dic3)# py2:  dic3.has_key('name')   返回True
    print(list(dic3.values())) #['alex', 18]

    3 改

    1 dic3={'name': 'alex', 'age': 18} 
    2   
    3 dic3['name']='alvin'
    4 dic4={'sex':'male','hobby':'girl','age':36} 
    5 dic3.update(dic4) 
    6 print(dic3) #{'name': 'alvin', 'age': 36, 'sex': 'male', 'hobby': 'girl'}  有键  则更新  没有则补充

    4 删

    dic4={'name': 'alex', 'age': 18,'class':1} 
      
      
    #dic4.clear() 
    #print(dic4)  #{}  清空字典
    #del dic4['name'] 
    #print(dic4)   #{'age': 18, 'class': 1}  删除name所对应的值
    
    #print(dic4.pop('age'))   #18   pop()有返回值
    #print(dic4)             #{'name': 'alex', 'class': 1}  删除以后剩余
    
    #a=dic4.popitem()       #随机删除
    #print(a,dic4)          # ('class', 1) {'name': 'alex', 'age': 18}
      
    #del dic4 
    #print(dic4) 
    """
    Traceback (most recent call last):
      File "C:UserszhangshuaiDesktopdic.py", line 16, in <module>
        print(dic4)
    NameError: name 'dic4' is not defined
    """

    5 其他操作以及涉及到的方法

    5.1 dict.fromkeys

    d1=dict.fromkeys(['host1','host2','host3'],'Mac') 
    print(d1)               #{'host1': 'Mac', 'host2': 'Mac', 'host3': 'Mac'}
      
    d1['host1']='xiaomi'
    print(d1)               #{'host1': 'xiaomi', 'host2': 'Mac', 'host3': 'Mac'}
    ####### 
    d2=dict.fromkeys(['host1','host2','host3'],['Mac','huawei']) 
    print(d2)               #{'host1': ['Mac', 'huawei'], 'host2': ['Mac', 'huawei'], 'host3': ['Mac', 'huawei']}
    d2['host1'][0]='xiaomi'
    print(d2)               #{'host1': ['xiaomi', 'huawei'], 'host2': ['xiaomi', 'huawei'], 'host3': ['xiaomi', 'huawei']}

    5.2  d.copy() 对字典 d 进行浅复制,返回一个和d有相同键值对的新字典

    5.3  字典的嵌套

     1 av_catalog = {
     2     "欧美":{
     3         "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
     4         "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
     5         "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
     6         "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
     7     },
     8     "日韩":{
     9         "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    10     },
    11     "大陆":{
    12         "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    13     }
    14 }
    15 
    16 av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"
    17 print(av_catalog["大陆"]["1024"])
    18 #ouput 
    19 ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
    View Code

    5.4 sorted(dict) : 返回一个有序的包含字典所有key的列表

    1 dic={5:'555',2:'222',4:'444'} 
    2 print(sorted(dic)) #[2, 4, 5] 返回一个有序的包含字典所有key的列表

    5.5 字典的遍历

    dic5={'name': 'alex', 'age': 18} 
      
    for i in dic5: 
        print(i,dic5[i]) #name alex   age 18
      
    for items in dic5.items(): 
        print(items) #('name', 'alex')   ('age', 18)
    for keys,values in dic5.items(): 
        print(keys,values) #name alex   age 18

     还用我们上面的例子,存取这个班学生的信息,我们如果通过字典来完成,那:

    dic={'zhangsan':{'age':23,'sex':'male'}, 
         '李四':{'age':33,'sex':'male'}, 
         'wangwu':{'age':27,'sex':'women'}    
         } 
  • 相关阅读:
    数据结构之单链表的实现java
    从尾到头打印列表——牛客剑指offer
    Java重要类之LinkedList
    删除链表中重复的结点——牛客剑指offer
    二维数组中的查找——牛客剑指offer
    爬虫常见异常
    持续集成常见异常及排除方案
    VMware安装与基本使用
    web开发常见异常及处理
    Linux简单介绍与基本使用(微系统,)
  • 原文地址:https://www.cnblogs.com/zerozs/p/8127754.html
Copyright © 2020-2023  润新知