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'''
  • 相关阅读:
    Atitit.ati orm的设计and架构总结 适用于java c# php版
    Atitit.ati dwr的原理and设计 attilax 总结 java php 版本
    Atitit.ati dwr的原理and设计 attilax 总结 java php 版本
    Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
    Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
    Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结
    Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结
    atitit.基于  Commons CLI 的命令行原理与 开发
    atitit.基于  Commons CLI 的命令行原理与 开发
    atitit.js 与c# java交互html5化的原理与总结.doc
  • 原文地址:https://www.cnblogs.com/Fantac/p/11207437.html
Copyright © 2011-2022 走看看