dict字典型数据的函数总结

本文深入探讨Python中字典的基本操作,包括复制、更新、获取、删除等关键函数的使用,以及深拷贝与浅拷贝的区别。通过实例演示如何利用字典的特性进行高效的数据管理和操作。

@基础复习
字典数据主要是键值对的方式存储,键必须是唯一的,但值可以不唯一,无序。
同样先查看字典数据的函数有哪些

>>> a={}
>>> print(dir(a))
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', 
'__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', 
'__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
'__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear',
 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
#clear-->values 11个函数
exp = {'电影': ['少林寺', '建国大业', '无问东西'], 'music': ['only one', 'only the young']}

copy dict.copy()

exp1 = exp.copy()  # shallow copy
print('exp1:', exp1)
# exp1: {'电影': ['少林寺', '建国大业', '无问东西'], 'music': ['only one', 'only the young']}
# 当对原始exp中的值进行替换时,复制后的dict不会受影响
exp['电影'] = 'hunter'  # 值替换
print('exp:', exp)
print('exp1:', exp1) #没有影响复制的字典
print(type(exp['电影']))
# exp: {'电影': 'hunter', 'music': ['only one', 'only the young']}
# exp1: {'电影': ['少林寺', '建国大业', '无问东西'], 'music': ['only one', 'only the young']}
# <class 'str'> 注意此时字典里的键‘电影’对应的值变成了字符型,不能直接用append进行附加
#否则报错AttributeError: 'str' object has no attribute 'append'

# 当对原始exp进行值增加时,已经copy的字典也会被改变
exp2 = exp.copy()  
exp['music'].append('love yourself')  # 值增加
print('exp(增加值):', exp)
print('exp2:', exp2)
# exp(增加值): {'电影': 'hunter', 'music': ['only one', 'only the young', 'love yourself']}
# exp2: {'电影': 'hunter', 'music': ['only one', 'only the young', 'love yourself']}

拓展 import copy deepcopy

import copy
exp3 = copy.deepcopy(exp)
exp['music'].append('love yourself')
print('exp:', exp)
print('exp3:', exp3)
# exp: {'电影': ['少林寺', '建国大业', '无问东西'], 'music': ['only one', 'only the young', 'love yourself']}
# exp3: {'电影': ['少林寺', '建国大业', '无问东西'], 'music': ['only one', 'only the young']}
# 此时只有exp增加了love yourself ,deepcopy的exp3并没有变化

fromkeys dict.fromkeys(sequence,values) 指定序列和值创建字典

value = [1]
entertain = dict.fromkeys(exp, value)
print('exp+value1', entertain)
value.append(2)
print('exp+values', entertain)
# exp+value1 {'电影': [1], 'music': [1]}
# exp+values {'电影': [1, 2], 'music': [1, 2]}

get dict.get(key,default=non) 如果查找的键不存在返回默认值

print('查找电影:', exp.get('电影'))
print('查找文学:', exp.get('文学', 1))  # 设定没有的话返回1
# 查找电影: ['少林寺', '建国大业', '无问东西']
# 查找文学: 1

items dict.items() 返回视图对象,显示dict的键值元组对组成的列表

print('display tuple pairs:', exp.items())
# display tuple pairs: dict_items([('电影', ['少林寺', '建国大业', '无问东西']), ('music', ['only one', 'only the young'])])

keys dict.keys() 返回键组成的列表

keys = exp.keys()
print('exp的键:', keys)
# exp的键: dict_keys(['电影', 'music'])

pop dict.pop(key,default=non)

element = exp.pop('电影')
print('删除了:', element, '删除后的字典:',  exp)  # 只返回删除元素的值
# 删除了: ['少林寺', '建国大业', '无问东西'] 删除后的字典: {'music': ['only one', 'only the young']}

popitem dict.popitem() 删除最近添加的或最末尾的键值对

exp.update({'fiction': 'hunter'})
exp.popitem()
print('popitem:', exp)
# popitem: {'电影': ['少林寺', '建国大业', '无问东西'], 'music': ['only one', 'only the young']}
# 把新插入的fiction 又删除了

setdefault dict.setdefault(key,default=non) 通过键查找返回对应的值,没有则返回默认值

movies = exp.setdefault('电影')
print('电影有:', movies)
history = exp.setdefault('history', 0)
print('history=', history)
# 电影有: ['少林寺', '建国大业', '无问东西']
# history= 0

update dict.update(other)

dict1 = {'num': 7, 'month': 9}
exp.update(dict1)
print('updated exp is ', exp)
# updated exp is  {'电影': ['少林寺', '建国大业', '无问东西'], 'music': ['only one', 'only the young'], 'history': 0, 'num': 7, 'month': 9}

values dict.values() 返回字典所有的值

print('return values of exp:', exp.values())
# return values of exp: dict_values([['少林寺', '建国大业', '无问东西'], ['only one', 'only the young']])

clear dict.clear() 清空所有键值对

exp.clear()
print('exp:', exp)
exp:{}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值