• python之字典的增删改查


    Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典都是无序的,但查询速度快。

    字典是一个key/value的集合,key可以是任意可被哈希(内部key被hash后作为索引)的类型。因此,key可以是文本、数字等任意类型。如果两个数字'=='判断相等,那么key就相等,value会产生覆盖(例如:1 == 1.0 # => True)。注意,浮点数比较很不精确,因此千万不要用浮点数作为key!

    Jason是字符串,区别于字典,只是格式比较像(key-value)

    字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

    d = {key1 : value1, key2 : value2 }

    键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。键可以取任何数据类型,但必须是不可变的,所以列表不行,如可取字符串,数字或元组。

    dict = {'a': 1, 'b': 2, 'b': '3'}
    print(dict['b']) #输出值是:3
    print(dict)  #输出:{'a': 1, 'b': '3'}

    ===========================================================================================================================================

    一、创建字典

    1. 空字典

    stu_info = dict()#空字典

    2. 字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下:

    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

    也可如此创建字典

    dict1 = { 'abc': 456 }
    dict2 = { 'abc': 123, 98.6: 37 }


    二、查询、访问字典里的值

    1. 把相应的键放入熟悉的方括弧,如下实例:

    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
    print("dict['Name']: ", dict['Name'])
    print("dict['Age']: ", dict['Age'])
    #以上实例输出结果: #dict['Name']: Zara       #dict['Age']: 7

    如果用字典里没有的键访问数据,会输出错误如下:

    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
    print ("dict['Name']: ", dict['hhName10'])

    以上实例输出结果:

    Traceback (most recent call last):
      File "E:/Python学习/pycharm/python脚本/day3/test.py", line 32, in <module>
        print ("dict['Name']: ", dict['hhName10'])
    KeyError: 'hhName10'
    2. dict.get()方法查询,如查询的key不存在,也不会报error,而是返回None或者如果指定了默认值,返回默认值
    print(dict.get('name', '此处可指定默认值,key不存在就输出此值')) #如果key不存在且没有指定默认值,则返回None

     3. 获取字典里所有的key,或者所有的value

    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
    print(dict.keys())    #获取字典里面所有key
    print(dict.values())  #获取字典里面所有的value
    
    以上输出内容如下:
    dict_keys(['Name', 'Age', 'Class'])
    dict_values(['Zara', 7, 'First'])

    4. 循环取出字典里所有的key,这种方式只能取出key,不能取value

    for key in dict:
        print(key)
    
    以上内容输出结果是:
    Name
    Age
    Class

    5. 循环取出字典里的key-value

    方法一:

    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
    for i in dict:
        print(i,dict[i])
    
    以上输出结果如下:
    Name Zara
    Age 7
    Class First

    方法二:

    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
    for i in dict:
        s = '%s==>%s' % (i, dict[i])
        print(s)
    
    
    输出结果:
    Name==>Zara
    Age==>7
    Class==>First

    方法三:(下面这种效率低,因为先会把字典转换成二维数组,然后在循环)

    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
    for k,v in dict.items():
        print('%s==>%s' % (k,v))
    
    
    输出结果:
    Name==>Zara
    Age==>7
    Class==>First

    6. 判断key是否在字典里存在,返回结果是True或者False,第一种方式执行效率高

    print('Name' in dict)    #效率高,执行速度快
    
    print('Name'in dict.keys())

    三、更新、修改字典里的值(键值对)

    1. 新增,方式一

    dict['phone']=15811111111  #新增一个字典里没有的元素

    2. 新增,方式二,与方式一的区别在于setdefault新增一个已经存在的key,它不会改变原来keyvalue

    dict.setdefault('email','qw@126.com')  

    3. 修改,方法同新增方式一

    dict['Name']='denise'

    4. 合并更新

    d1={'b':1}
    d2={'a':"v"}
    d1.update(d2)
    print(d1)  #输出为:{'b': 1, 'a': 'v'}

    四、删除

    1. dict.pop(‘key’)

    dict.pop('Name') #删除指定的key及其对应的value

    2. del dict['key']

    del dict['Name']  #删除指定的key及其对应的value

    3. dict.clear()

    dict.clear()  #清空这个字典,返回空的字典

    4. dict.popitem()

    dict.popitem() #从字典里随机删除一个元素

    5. del dict

    del dict
    print(dict) # 报错:NameError: name 'dict1' is not defined,因为此词典已被删除
  • 相关阅读:
    怎么解决input中readonly属性的iOS一直存在光标问题
    点击图片播放视频
    h5上传图片
    添加和删除节点
    阻止事件冒泡
    四分之一圆border-radius的用法
    【记录一个问题】libtask无法在android下编译通过
    【记录一个问题】云风的协程库 c conroutine无法在android下链接通过
    【记录一个问题】macos下lldb调试opencv的一个程序,出现“failed to load objfile for”错误,并且无法调试进入opencv的函数
    【测试数据】android下CPU核与线程数的关系
  • 原文地址:https://www.cnblogs.com/denise1108/p/9984438.html
Copyright © 2020-2023  润新知