Python基础(五) 基本数据类型④:字典


转载请附上原文链接,谢谢合作。

一、字典(dict)

  字典是Python中唯一的一个映射类型。他是由 { } 括起来的键值对组成。在字典中key是唯一的,在保存的时候,根据key计算出一个内存地址,然后将key-value保存在这个地址中,也就是hash算法。在dict中存储的key-value中的key必须是可hash的。
Python中的可hash数据类型:int,str,bool,…
不可hash的:list,dict,set.

语法:{key1:value1,key2:value2,…}
其中key不可变(可hash),value可以是任意数据类型。

二、字典的相关操作

1.增

字典的增加有两种操作方式

①dic[ key ] = value
如果dic中没有出现过的key则新增一个,如果出现过就是赋值。

②dic.setdefault( key , value )
setdefault中的value参数可省略,如果省略默认给值None
如果key已经存在,则不会进行任何操作。

dic = {
    
    }
dic['sno'] = '1234'
dic['sname'] = '张三'
print(dic)
# 输出结果:{'sno': '1234', 'sname': '张三'}

dic.setdefault('sage',18)
dic.setdefault('sadress')
dic.setdefault('sadress','XXXX')  # 因为key和上一行一样,所以不会进行操作。
print(dic)
# 输出结果:{'sno': '1234', 'sname': '张三', 'sage': 18, 'sadress': None}

2.删

①dic.pop( key )
删除指定的key及其value
返回值为删除的key的value

②del dic[ key ]
效果同上一条,但无返回值。

③dic.popitem()
随机删除一个
返回值为( key , value ),数据类型为:tuple(元组)

④dic.clear()
清空字典

dic = {
    
    'sno': '1234', 'sname': '张三', 'sage': 18, 'sadress': None,'semail':'321m'}

ret = dic.pop('sadress')
print(ret)  # None
print(dic)  # {'sno': '1234', 'sname': '张三', 'sage': 18, 'semail': '321m'}

del dic['semail']
print(dic)  # {'sno': '1234', 'sname': '张三', 'sage': 18}

ret = dic.popitem()
print(ret)  # ('sage', 18)
print(dic)  # {'sno': '1234', 'sname': '张三'}

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

3.查

①直接输出语句
print( dic[ key ] )
弊端:如果key不存在,会直接报错

②dic.get( key , 返回值 ) 第二参数可省略
当key存在的时候返回其value
不存在的时候返回指定的返回值,省略返回值默认返回None

dic = {
    
    'sno': '1234', 'sname': '张三', 'sage': 18, 'sadress': None}

print(dic['sno'])  # 1234

print(dic[321321])  # 报错:KeyError: 321321,key不存在

ret = dic.get('sname')
print(ret)  # 张三

ret = dic.get('sage', 'abcde')
print(ret)  # 18

ret = dic.get(999)
print(ret)  # None

ret = dic.get(999, 'abcde')
print(ret)  # abcde

4.改

①dic[ key ] = value
和增加一样,如果key存在,就是更改,不存在就是增加。

②dic1.update(dic2)
把dic2中的内容更新到dic1中,如果key有相同的,就更改为dic2的值,如果key不存在,就新增。dic2的内容不会变化。

dic1 = {
    
    'sno': '1234', 'sname': '张三', 'sage': 18, 'sadress': None}
dic2 = {
    
    'sno': '4321', 'semail': '321m'}

dic1.update(dic2)

print(dic1)
# {'sno': '4321', 'sname': '张三', 'sage': 18, 'sadress': None, 'semail': '321m'}

print(dic2)
# {'sno': '4321', 'semail': '321m'}

5.其他操作

dic.keys()
返回一个list类型的列表,其中每个元素都是dic里的key

dic.values()
同上,返回的是value

dic.items()
返回的也是列表,列表中的元素类型是tuple(元组)
返回值例如:[ ( key , value ) ]

三、字典的嵌套

和列表、元组一样,字典内也可以放字典(套娃)

dic = {
    
    
    'name': '张三',
    'age': 33,
    'child': {
    
    
        'name': '张XX',
        'age': 10
    },
    'wife': {
    
    
        'name': '罗XX',
        'age': 30
    }
}

ret = dic.get('child')
print(ret)  # {'name': '张XX', 'age': 10}

ret = dic.get('child').get('age')  # 允许套娃
print(ret)  # 10

猜你喜欢

转载自blog.csdn.net/HRT48267868/article/details/105637231