Python巩固基础02-基本数据类型之Dict字典类型详解

创建字典

使用{}直接创建

>>> my_d = {1: 'hello', 'a': 'world'}
>>> my_d
{1: 'hello', 'a': 'world'}

使用dict()创建

>>> my_d1 = {}
>>> my_d1
{}
>>> my_d1['hello'] = 'world'
>>> my_d1
{'hello': 'world'}

字典的增删查改

字典中增加新值

直接增加新的键值对

>>> my_d = {'name': 'mike', 'age': 17}
>>> my_d['city'] = 'beijing'
>>> my_d
{'name': 'mike', 'age': 17, 'city': 'beijing'}

删除值或删除字典

使用del dict['key']或者dict.clear()或者del dict

>>> my_d
{'name': 'mike', 'age': 17, 'city': 'beijing'}
>>> del my_d['age']
>>> my_d
{'name': 'mike', 'city': 'beijing'}
>>> my_d.clear()  # 清空字典中的值
>>> my_d
{}
>>> del my_d
>>> my_d
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'my_d' is not defined

访问字典中的值

使用key或者get()方法来访问

>>> my_d = {'name': 'mike', 'age': 17, 'city': 'beijing'}
>>> my_d['name']
'mike'
>>> my_d.get('city')
'beijing'

修改字典中的元素

使用key直接修改

>>> my_d
{'name': 'mike', 'age': 17, 'city': 'beijing'}
>>> my_d['age'] = 19
>>> my_d
{'name': 'mike', 'age': 19, 'city': 'beijing'}

字典的常用函数与方法

>>> my_d = {'name': 'mike', 'age': 14, 'city': 'shanghai'}

# 计算字典元素个数,一个键值对为一个元素
>>> len(my_d)
3

# 返回一个字典的浅拷贝,当原字典中有可变对象时,可变对象被修改后,浅拷贝中也会被对应修改
>>> d1 = my_d.copy()
>>> d1
{'name': 'mike', 'age': 14, 'city': 'shanghai'}

# dict.fromkeys(dict, value) 创建一个新字典,以dict中的键为键值,以value的值为所有键的默认值,value可不指定,不指定则为None
>>> new_d = dict.fromkeys(my_d)
>>> new_d
{'name': None, 'age': None, 'city': None}
>>> new_d = dict.fromkeys(my_d, 18)
>>> new_d
{'name': 18, 'age': 18, 'city': 18}

# get方法,通过键获得对应的值
>>> my_d.get('city')
'shanghai'

# 判断某个值是否在字典的键中
>>> 'name' in my_d
True
>>> 'wahaha' in my_d
False

# 返回字典的视图对象
# 视图对象是实时的,当字典有变更时,视图对象也会对应变更
# dict.items()、dict.keys()、dict.values()都是返回的视图对象
# 视图对象为只读,不允许修改
# dict.items()返回的视图对象,可以使用for循环打印,一个键值对为一个tuple
>>> my_d.items()
dict_items([('name', 'mike'), ('age', 14), ('city', 'shanghai')])
>>>for i in my_d.items():
...     print(i)
...     
('name', 'mike')
('age', 14)
('city', 'shanghai')

>>> my_d
{'name': 'mike', 'age': 14, 'city': 'shanghai'}
>>> k = my_d.keys()
>>> v = my_d.values()
>>> k
dict_keys(['name', 'age', 'city'])
>>> v
dict_values(['mike', 14, 'shanghai'])
>>> my_d['sex'] = 1
>>> k
dict_keys(['name', 'age', 'city', 'sex'])
>>> v
dict_values(['mike', 14, 'shanghai', 1])

# dict.setdefault(key, value)方法,通过key值获取对应的value,若key不存在,则增加到字典中,value为默认值,value可不写,默认为None
>>> my_d.setdefault('name')
'mike'
>>> my_d.setdefault('like')
>>> my_d
{'name': 'mike', 'age': 14, 'city': 'shanghai', 'sex': 1, 'like': None}

# dict.update()方法,参数为另一个dict,将参数中的键值对更新到dict中
>>> tmp = {'home': 'hangzhou'}
>>> my_d.update(tmp)
>>> my_d
{'name': 'mike', 'age': 14, 'city': 'shanghai', 'sex': 1, 'like': None, 'home': 'hangzhou'}

# pop()方法,删除参数中key对应的值,返回被删除的值
>>> my_d.pop('home')
'hangzhou'
# popitem()删除dict中最后一个键值对
>>> my_d.popitem()
('sex', 1)

注意
初始化字典的第一反应是使用dict.fromkeys(),如果value值是int之类的简单值类型没什么问题,但用list初始化则不然。

场景是为dict初始化value值为空的list,可以分别对不同key值对应的value独立操作。

使用dict.fromkeys()初始化得到的字典改动一个value其他的value值也会跟随变化,这是因为后者每个key对应的value值都指向了同一个列表。也就是说,使用dict.fromkeys()初始化,只存在一个被共用的list。(原文链接:https://blog.csdn.net/MasterWuzhi/article/details/89475694)

posted @   hook_what  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示