Python数据结构dict常用操作代码实例

时间:2021-05-22

dict是python中的常用数据结构,应该尽量掌握其使用方法

字典是另一种可变容器模型,且可存储任意类型对象。

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

代码如下

""" 初始化一个dict的四种方式: 1. dict() -> 创建一个空的dict 2. dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs 3. dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v 4. dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2) """# 第一种方式d = dict()# 第二种方式# d = {"person": {"name": "admin", "age": 12},# "animal": {"name": "gaodan", "age": 3},# }# 第三种方式d = dict({"name": "admin"})print(d)# 第四种方式d = dict(name='admin', age=12)print(type(d))print("原字典:%s" % d) # {'name': 'admin', 'age': 12}# clear, 清空# d.clear()# print(d)# copy 浅拷贝new_d = d.copy()print("copy出的新字典:%s" % new_d) # {'name': 'admin', 'age': 12}new_d['name'] = 'root'print('修改之后的copy字典:%s' % new_d) # 修改之后的copy字典:{'name': 'root', 'age': 12}print("修改之后的原字典:%s" % d) # {'name': 'admin', 'age': 12}# 总结: copy浅拷贝简单数据结构时,创建了一个新的对象,修改新dict中的值,不会引起原有dict中值的变化print('*' * 50)d = {"person": {"name": "admin", "age": 12}, "animal": {"name": "gaodan", "age": 3} }print(d) # {'person': {'name': 'admin', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}new_d = d.copy()new_d['person']['name'] = 'root'print(new_d) # {'person': {'name': 'root', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}print(d) # {'person': {'name': 'root', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}# 总结: 浅拷贝: copy浅拷贝复杂数据结构时,只是指向了这个复杂数据结构的引用,并没有创建一个新的对象.所以修改new_d这个新dict的值时,原dict中的值也发生变化.如果是简单数据结构,不存在这类情况,上面也有示例""" python中的深拷贝 需要 import copy copy.deepcopy()"""print('--------------------deep copy------------------')import copyd = {"person": {"name": "admin", "age": 12}, "animal": {"name": "gaodan", "age": 3} }print(d)dd = copy.deepcopy(d)print(dd) # {'person': {'name': 'admin', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}dd['person']['name'] = '哑巴'print(dd) # {'person': {'name': '哑巴', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}print(d) # {'person': {'name': 'admin', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}# fromkeys, 创建一个新的dict ,key是序列中的值d = dict.fromkeys(['jet','lily'],{"name":"mam"})print(d) # {'jet': {'name': 'mam'}, 'lily': {'name': 'mam'}}# get .取值 ,没有就是Nonevalue = d.get("jet")print(value) #{'name': 'mam'}d = {"name":'admin','age':12}#items 方法kv = d.items()for k,v in kv: print(k,v)keys = d.keys()print(keys) # dict_keys(['name', 'age'])# pop(key) 移除指定的key 对应的kv# value = d.pop('name') # 删除name 键值对# print(value) # admin# print(d) # {'age': 12}# popitem 移除后面的一组itempopitem = d.popitem()print(popitem) # ('age', 12) 移除了这一对映射关系print(d) # {'name': 'admin'} d 还剩下这玩艺d = {"name":'admin','age':12}# setdefault(k,v) , 如果原dict有中k, 就返回原dict中k-->v , 否则就将k,v添加到dict中default_value = d.setdefault('female', 'ali')print(default_value)print(d) # {'name': 'admin', 'age': 12, 'female': 'ali'}default_value = d.setdefault('female', 'jd')print(default_value) # aliprint(d) # {'name': 'admin', 'age': 12, 'female': 'ali'}# update. 往dict中添加元素# 使用update的第一种方式 ,注意key没有加引号# d.update(book='python',teacher='dog')print(d) # {'name': 'admin', 'age': 12, 'female': 'ali', 'book': 'python', 'teacher': 'dog'}#使用update的第二种方式d.update([('teacher','dog'),{'book','java'}]) #好吊的样子print(d) #{'name': 'admin', 'age': 12, 'female': 'ali', 'teacher': 'dog', 'book': 'java'}# valuesvs = d.values()print(vs) #dict_values(['admin', 12, 'ali', 'dog', 'java'])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章