【无为则无心&Python基础】— 32、Python中字典的常用操作

字典常见操作

1、增

写法:字典序列[key] = 值

注意:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

# 1.修改字典中name的值。
dict1['name'] = 'Rose'
# 结果:{'name': 'Rose', 'age': 20, 'gender': '男'}
print(dict1)

# 2.新增id属性
dict1['id'] = 110
# {'name': 'Rose', 'age': 20, 'gender': '男', 'id': 110}
print(dict1)

注意:字典为可变类型。

2、删

@1.del( )方法 或del函数

del( )方法 或del函数:删除字典或删除字典中指定键值对。

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

# 1.删除字典中指定的键值对
# 结果:{'name': 'Tom', 'age': 20}
del dict1['gender']
print(dict1)

# 2.通过del删除整个字典
# 结果:NameError: name 'dict1' is not defined
del(dict1)
print(dict1)

# 3.所删除的key不包含在字典中,会抛异常
# 结果:KeyError: 'genders'
del dict1['genders']
print(dict1)
@2.clear( )方法

clear( )方法:清空字典

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
dict1.clear()
print(dict1)  # {}
@3.popitem( )方法

popitem( )方法随机删除字典中的一个键/值对,一般都会删除最后一个键值对。

删除之后,它会将删除的key-value作为返回值返回,

返回的是一个元组,元组中有两个元素,第一个元素是删除的key,第二个是删除的value。

"""
1.在字典中删除一个键值对。
输出结果:
result =  ('c', 3)
{'a': 1, 'b': 2}
"""
d = {'a': 1, 'b': 2, 'c': 3}
result = d.popitem()
print("result = ", result)
print(d)

# 2.当使用popitem()删除一个空字典时,会抛出异常。
# 结果:KeyError: 'popitem(): dictionary is empty'
d = {}
d.popitem()

@4.pop(key[, default])方法
"""
1.pop(key[, default])方法,
根据key删除字典中的key-value,
会将被删除的value返回!

输出结果:
result =  1
{'b': 2, 'c': 3}
"""
d = {'a': 1, 'b': 2, 'c': 3}
result = d.pop('a')
print("result = ", result)
print(d)


"""
2.如果删除的key,在字典中不存在,会抛出异常。

"""
# 结果:KeyError: 'f'
d = {'a': 1, 'b': 2, 'c': 3}
result = d.pop('f') # 异常

"""
3.如果指定了默认值,再删除不存在的key时,不会报错,
而是直接返回默认值。
输出结果:
result =  这是默认值
{'a': 1, 'b': 2, 'c': 3}
"""
d = {'a': 1, 'b': 2, 'c': 3}
result = d.pop('z','这是默认值')
print("result = ", result)
print(d)

3、改

@1.通过key修改字典

写法:字典序列[key] = 值

注意:如果key存在则修改这个key对应的值 ,如果key不存在则新增此键值对。

dict1 = {'name': 'TOM', 'age': 20, 'gender': '男'}

# 修改
# 结果:{'name': 'Lily', 'age': 20, 'gender': '男'}
dict1['name'] = 'Lily'
print(dict1)

# 增加
# 结果:{'name': 'Lily', 'age': 20, 'gender': '男', 'id': 110}
dict1['id'] = 110
print(dict1)

@2.setdefault(key[, default])方法
"""
setdefault(key[, default]) 可以用来向字典中添加key-value,
如果key已经存在于字典中,则返回key的值,不会对字典做任何操作,
如果key不存在,则向字典中添加这个key,并设置value,返回默认值。
"""
# 1.存在key,不会对字典做任何操作,返回key的值
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
result = dict1.setdefault('name','猪八戒')
print('result =',result) # result = Tom
print(dict1) # {'name': 'Tom', 'age': 20, 'gender': '男'}

# 2.不存在key,添加值,返回key的默认值
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
result = dict1.setdefault('id','猪八戒')
print('result =',result) # result = 猪八戒
print(dict1) # {'name': 'Tom', 'age': 20, 'gender': '男', 'id': '猪八戒'}

@3.update([other])方法
"""
将其他的字典中的key-value添加到当前字典中
如果有重复的key,则后边的会替换到当前的
"""
# 结果:{'a': 7, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
d = {'a': 1, 'b': 2, 'c': 3}
d2 = {'d': 4, 'e': 5, 'f': 6, 'a': 7}
d.update(d2)
print(d)

4、查

@1.key值查找

key必须加引号,否则按变量识别。

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 1.key存在返回对应的值
print(dict1['name'])  # Tom

# 2.字典中没有对应的key
# 结果KeyError: 'id'
print(dict1['id'])  # 报错

如果当前查找的key存在,则返回对应的值;否则则报错。

@2.get( )方法

该方法用来根据键来获取字典中的值。

语法
字典序列.get(key, 默认值)

注意:如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回None。

快速体验
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 1.如果key存在,返回对应的值
print(dict1.get('name'))  # Tom

# 2.如果key不存在,返回默认值。
print(dict1.get('id', 110))  # 110

# 3.如果key不存在,也没有设置默认值,则返回None。
print(dict1.get('id'))  # None
@3.keys( )方法
示例:
# 查找字典中所有的key,返回一个序列,包含字典中所有的key。
# 是一个可迭代的序列。(就是支持for遍历)
# 结果:dict_keys(['name', 'age', 'gender'])
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.keys())  

遍历字典的key
"""
# dict1.keys()得到可遍历的对象
输出结果: 
name
age
gender
"""
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key in dict1.keys():
    print(key)
@4.values( )方法
示例:
# 查找字典中所有的value值,返回一个序列,包含字典中所有的value值。
# 是一个可迭代的序列。
# 结果:dict_values(['Tom', 20, '男'])
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.values())  
遍历字典的value
"""
# dict1.values()得到可遍历的对象
输出结果: 
Tom
20
男
"""
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for value in dict1.values():
    print(value)
@5.items( )方法
示例:
# 查找字典中所有的键值对,返回一个序列,包含字典中所有的键值对(项)。
# 是一个可迭代的序列。
# 可迭代对象里面的数据是元组(有的也叫双值子序列),
# 元组中数据1是字典的key,元组中数据2是字典key对应的值。

# 结果:dict_items([('name', 'Tom'), ('age', 20), ('gender', '男')])
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.items()) 
遍历字典的元素
"""
# dict1.items()得到可遍历的对象,其中的元素是一个元组。
输出结果: 
('name', 'Tom')
('age', 20)
('gender', '男')
"""
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for item in dict1.items():
    print(item)
遍历字典的键值对

也就是将得到的数据进行一个拆包动作。

"""
xx.items(): 返回可迭代对象,内部的元素是元组,
而元组有2个数据,将元组中的第一个数据赋值给第一个变量,第二个数据赋值给第二个变量。
也就是元组数据1是字典的key,元组数据2是字典的value,
这就是所谓的拆包动作。(可以看元祖中将的序列的拆包)

输出结果: 
name = Tom
age = 20
gender = 男
"""

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key, value in dict1.items():
    print(f'{key} = {value}')

5、copy( )复制

和列表中的用法一样,这里补充说明:

copy( )方法用于对字典进行浅复制,复制以后的对象,和原对象是独立,修改一个不会影响另一个。

但注意,浅复制会简单复制对象内部的值,如果内部值也是一个可变对象,这个可变对象不会被复制。

#基本用法和列表一样。(可以看列表)

"""
# 字典的value可以存储的还是字典,
这个value值的字典用copy()方法的时候,是不进行复制的,
在内存中还是一份的,所以修改其中一个字典的value,
另一个也会改变。

输出结果:
d =  {'a': {'name': '猪八戒', 'age': 18}, 'b': 2, 'c': 3}
d2 =  {'a': {'name': '猪八戒', 'age': 18}, 'b': 2, 'c': 3}
"""
d = {'a': {'name': '孙悟空', 'age': 18}, 'b': 2, 'c': 3}
d2 = d.copy()
d2['a']['name'] = '猪八戒'
print("d = ", d)
print("d2 = ", d2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值