Python学习笔记(二十) Python3字典 | 您所在的位置:网站首页 › python3字典 › Python学习笔记(二十) Python3字典 |
Python3字典
字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示: d = { key1 : value1, key2 : value2 } 键必须是唯一的,但值则不必。 若字典中出现相同的键,后面的键值对会覆盖前面的键值对。 python字典中,键是唯一的,hashable type,不支持直接修改,值可以任意更改。 值可以取任何数据类型,但键必须是不可变的,如字符串,数字。 一个简单的字典实例: dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 也可如此创建字典: dict1 = { 'abc': 456 } dict2 = { 'abc': 123, 98.6: 37 } 访问字典里的值 把相应的键放入到方括号中,如下实例: 实例以上实例输出结果: dict['Name']: Runoob dict['Age']: 7 如果用字典里没有的键访问数据,会输出错误如下: 实例以上实例输出结果: 向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例: 实例以上实例输出结果: dict['Age']: 8 dict['School']: 教程 删除字典元素能删单一的元素也能清空字典,清空只需一项操作。 显示删除一个字典用del命令,如下实例: 实例但这会引发一个异常,因为用执行 del 操作后字典不再存在: 注:del() 方法后面也会讨论。 字典键的特性字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。 两个重要的点需要记住: 1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例: 实例以上实例输出结果: dict['Name']: 小菜鸟 2)键必须不可变,所以可以用数字、字符串或元组充当,而用列表(unhashable type)就不行,如下实例: 实例以上实例输出结果: Traceback (most recent call last): File "test.py", line 3, in dict = {['Name']: 'Runoob', 'Age': 7} TypeError: unhashable type: 'list' 字典内置函数&方法Python字典包含了以下内置函数: 序号 函数及描述 实例 1 len(dict)计算字典元素个数,即键的总数。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> len(dict) 3 2 str(dict)输出字典,以可打印的字符串表示。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> str(dict) "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}" 3 type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> type(dict) Python字典包含了以下内置方法: 序号 函数及描述 1 dict.clear()删除字典内所有元素 2 dict.copy()返回一个字典的浅拷贝 python直接赋值、浅拷贝、深拷贝解析 ↓ https://www.cnblogs.com/wushuaishuai/p/7737865.html https://www.cnblogs.com/wushuaishuai/p/7737917.html https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html 3 dict.fromkeys(seq[, value]) # []中内容可有可无创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 4 dict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值 5 key in dict key not in dict如果键在字典dict里返回true,否则返回false 6 dict.items()以列表返回可遍历的(键, 值) 元组列表(数组) # [(key, value), (key, value)] 7 dict.keys()返回一个迭代器,可以使用 list() 来转换为列表 8 dict.setdefault(key, default=None)和get()类似, 如果key在字典中,返回对应的值; 如果key不存在于字典中,将会添加key并将值设为default 9 dict.update(dict2)把字典dict2的键/值对更新到dict里 10 dict.values()返回一个迭代器,可以使用 list() 来转换为列表 11 href="https://www.runoob.com/python3/python3-att-dictionary-pop.html" dict.pop(key[,default]) # []中内容可有可无删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 12 dict.popitem()随机返回并删除字典中的最后一对键和值。 '''Python3字典 字典是另一种可变容器模型,且可存储任意类型对象 字典的每个键值对 key => value 用冒号":"分隔,每个对之间用逗号","分隔,整个字典包括在花括号"{}"中 表示方式为:d = [key1 : value1, key2 : value2] 键必须是唯一的,但值则不必 键必须是不可变的,但值可以取任何数据类型,如字符串、数字 键可以是字符串,也可以是整型数字''' # print("dict['Age'] = ", dict['Age'])# print("dict['School'] = ", dict['School'])# 删除字典后,再引用字典会报错:TypeError: 'type' object is not subscriptable ### 字典键的特性# 字典值可以是任何python对象,既可以是标准的对象,也可以是用户自定义的对象,但键不行# 两个重要的点需要记住:# 1、不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住 # 2、键必须不可变,可以使用数字、字符串、元组,但键不可以使用列表! ### Python字典包含了以下内置方法:# 1、clear():'''描述: python字典clear()方法用于清空字典内所有元素语法: dict.clear()参数: NA返回值: 无''' ### 直接赋值、copy()与deepcopy()的区别 Python直接赋值、浅拷贝和深拷贝的解析,可将示例与图片结合分析。 '''直接赋值:其实就是对象的引用(别名)。 当对象a的内容改变时,对象b的内容也会改变。浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象。 当对象a的内容改变时,对象b的父对象不会改变,子对象会改变。深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝了父对象及其子对象。 当对象a的内容改变时,对象b的内容不受影响,即对象b的内容不会改变。''' # 4、get():'''描述: python字典get()返回指定键的值,如果键不存在则返回default设置的默认值语法: dict.get(key, default=None)参数: key--字典中要查找的键 default--如果指定的键不存在时,返回该默认值返回值: 返回指定的键,如果键不在字典中,返回默认值None或指定的默认值''' # 5、in 、not in:'''描述: python字典in操作符用于判断键是否存在于字典中,如果键在字典dict里返回True,否则返回False。 而not in操作符则刚好相反,如果键在字典dict里返回False,否则返回True语法: key in dict key not in dict参数: key--要在字典中查找的键 dict--要查找的字典返回值: 如果键在字典里返回True,否则返回False''' # 6、items():'''描述: python字典items()方法以列表方式返回可遍历的(键, 值)元组数组。语法: dict.items()参数: 无返回值: 返回可遍历的(键, 值)元组数组''' dict = {'Name' : 'Runoob', 'Age' : 7}print('value: %s' % dict.items())# 7、keys():'''描述: python3字典keys()方法返回一个可迭代对象,可以使用list()来转换为列表。 注意,python2.x是直接返回列表语法: dict.keys()参数: 无返回值: 返回一个迭代器'''dict = {'Name' : 'Runoob', 'Age' : 7, 'Sex' : 'female'}print(dict.keys())print('字典中所有的键为:', list(dict.keys())) # 转换为列表# 8、setdefault():'''描述: python字典setdefault()方法和get()方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。语法: dict.setdefault(key, default=None)参数: key--要查找的键 default--键不存在时,设置的默认值返回值: 如果key在字典中,返回对应的值, 如果key不在字典中,则插入key并设置默认值default且返回default,default默认值为None'''dict = {'Name' : 'Runoob', 'Age' : 7}print('Age键的值为:%s' % dict.setdefault('Age', None))print('Sex键的值为:%s' % dict.setdefault('Sex', None))print('新字典为:', dict)# 9、update():'''描述: python字典update()函数把字典参数dict2的key/value(键/值)更新到字典dict里语法: dict.update(dict2)参数: dict2--添加到指定字典dict里的字典返回值: 该方法没有任何返回值'''dict = {'Name' : 'Runoob', 'Age' : 7}dict2 = {'Sex' : 'female', 'Age' : 18}print('更新前的字典dict:', dict)dict.update(dict2)print('更新后的字典dict:', dict) # 将dict2的内容更新到dict中,相同的键则进行覆盖 print('字典中所有的值为:', list(dict.values())) # 11、pop():'''描述: python字典pop()方法删除字典给定键key所对应的值,返回值为被删除的值。key值必须给出,否则返回default值。语法: pop(key[, default])参数: key--要删除的键值 default--如果没有key,返回default值返回值: 返回被删除的值'''dict = {'Name' : '菜鸟', 'Alexa' : 10000, 'URL' : 'www.runoob.com'}print('删除键之前的字典:', dict)pop_obj = dict.pop('Name')print('删除的元素:', pop_obj)print('删除键之后的字典:', dict)pop_obj2 = dict.pop('Age', None) # 要删除的键不存在,返回None值print(pop_obj2)# 12、popitem():'''描述: python字典popitem()方法随机返回并删除字典中的最后一对键和值语法: popitem()参数: 无返回值: 返回一个键值对(key, value)形式,按照LIFO(Last In First Out后进先出)顺序原则,即最末尾的键值对。'''dict = {'name' : '菜鸟', 'alexa' : 10000, 'url' : 'www.runoob.com'}print('删除之前的字典:', dict)# dict.clear() # 清空字典后,报错KeyError: 'popitem(): dictionary is empty'pop_obj = dict.popitem()print('删除的元素:', pop_obj)print('删除之后的字典:', dict) python修改字典键(key)的方法 间接修改键的key值方法 第一种(推荐): 第二种方法: 第三种方法: dict.items()图解: dict.items()、dict.keys()、dict.values()三者的区别: Python字典推导式 字典推导式的语法格式如下: {表达式 for 迭代变量 in 可迭代对象 [if条件表达式]} # []中内容可有可无 '''字典推导式: 自Python2.7以来,列表推导概念就移植到了字典上,从而有了字典推导''' |
CopyRight 2018-2019 实验室设备网 版权所有 |