zoukankan      html  css  js  c++  java
  • Python学习日记(三) 学习使用dict

    数据按类型可划分为:

    不可变数据类型(可哈希):元祖、string、int、bool  

    可变数据类型(不可哈希):dict、list

    集合本身是可变数据类型,元素是不可变数据类型

    字典中的key必须是不可变数据类型,value可以是任意数据类型

    字典的优点:二分查找查询、存储大量关系型数据

    dict创建格式:

    dic1 = dict(key1 = 20,
                key2 = 30)
    print(dic1)     #{'key1': 20, 'key2': 30}
    dic2 = dict({'key1':20,
                 'key2':30,
                 'key3':450})
    print(dic2)     #{'key1': 20, 'key2': 30, 'key3': 450}
    dic3 = dict((('key1',100),
                 ('key2',200),
                 ('key3',302)))
    print(dic3)     #{'key1': 100, 'key2': 200, 'key3': 302}
    dic4 = dict([('key1',100),
                 ('key2',200),
                 ('key3',302)])
    print(dic4)     #{'key1': 100, 'key2': 200, 'key3': 302}
    dic5 = {'key1':100,
            'key2':200}
    print(dic5)     #{'key1': 100, 'key2': 200}

    创建一个字典:

    dic = {
           'name' : 'Jogn',
           'age' : 18,
           'height' : 170,
          }

    增:

    <1>通过键值对直接赋值

    dic['name'] = 'JognsMoke'            #{'name': 'JognsMoke', 'age': 18, 'height': 170}    
    dic['weight'] = 75            #{'name': 'JognsMoke', 'age': 18, 'height': 170, 'weight': 75}

    <2>dict.setdefault()

    有返回值,默认值为None,若该键存在则返回原值,若不存在则返回设置的默认值

    dic.setdefault('height',177)    #{'name': 'Jogn', 'age': 18, 'height': 170}
    dic.setdefault('sex','male')    #{'name': 'Jogn', 'age': 18, 'height': 170, 'sex': 'male'}
    print(dic.setdefault('height',177))     #170
    print(dic.setdefault('sex','male'))     #male

    删:

    <1>dict.pop()

    删除字典指定的键值对,返回键所对应的值,键值必须要给出,否则返回默认值

    print(dic.pop('name'))  #Jogn
    print(dic.pop('name',None)) #None
    print(dic.pop('name','该值已被弹出')) #该值已被弹出

    <2>dict.popitem()

    3.5(包括3.5)之前随机删除一个键值对,3.5之后删除最后的一对键值对 返回值为(key,value) 如果字典为空则返回 'popitem(): dictionary is empty'

    print(dic.popitem())    #('height', 170) python 3.7

    <3>dict.clear()

    清空字典

    dic.clear()
    print(dic)  #{}

    <4>del

    删除键值对也可以删除整个字典,键名存在则删除该键值对,弱不存在则报错

    del dic['name'] #{'age': 18, 'height': 170}
    print(dic)
    
    del dic['sex']  #KeyError: 'sex'
    
    del dic
    print(dic)  #name 'dic' is not defined

    改:

    <1>通过键值对直接改

    <2>dict.update()

    把字典二的键值对更新到字典一中,无返回值

    dic2 = {
            'name' : 'Jane',
            'sex' :'female'
            }
    dic.update(dic2)        
    print(dic) #{'name': 'Jane', 'age': 18, 'height': 170, 'sex': 'female'}
    dic.update(sex = 'female',hobby = 'sing')   #{'name': 'Jogn', 'age': 18, 'height': 170, 'sex': 'female', 'hobby': 'sing'}
    print(dic)
    dic.update([('sex','female'),('hobby','play')]) #{'name': 'Jogn', 'age': 18, 'height': 170, 'sex': 'female', 'hobby': 'play'}
    print(dic)

    查:

    <1>通过键直接查询

    没有此键则会报错

    print(dic['name'])  #Jogn

    <2>dict.get()

    v1 = dic.get('name')    #Jogn
    print(v1)
    v2 = dic.get('hobby')   #None
    print(v2)
    v3 = dic.get('hobby','并未找到')    #并未找到
    print(v3)

    <3>for循环

    print("打印字典键:") 
    for i in dic:
        print(i)
    '''打印字典键:
        name
        age
        height'''
        
    print("打印字典键:")
    for i in dic.keys():
        print(i)
    '''打印字典键:
        name
        age
        height'''
    
    print("打印字典值:")
    for i in dic.values():
        print(i)
    '''打印字典值:
        Jogn
        18
        170'''
    
    print("打印去掉括号的字典键值对:")
    for i,j in dic.items():
        print(i,j)
    '''打印去掉括号的字典键值对:
        name Jogn
        age 18
        height 170'''
  • 相关阅读:
    SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)
    算法大神之路----排序(插入排序法)
    Redis的基本使用(基于maven和spring)
    算法大神之路----排序(选择排序法)
    exe4j 安装
    png转ico网站
    artTemplate/template.js模板将时间格式化为正常的日期
    artTemplate js模板引擎动态给html赋值
    IIS7的集成模式下如何让自定义的HttpModule不处理静态文件(.html .css .js .jpeg等)请求
    Windows Server2012 R2 安装.NET Framework 3.5失败解决方法
  • 原文地址:https://www.cnblogs.com/Fantac/p/11207437.html
Copyright © 2011-2022 走看看