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 <module>
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) <class '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]) # []中内容可有可无 |
4 |
dict.get(key, default=None) |
5 |
key not in dict |
6 |
dict.items() |
7 |
dict.keys() |
8 |
dict.setdefault(key, default=None) |
9 |
dict.update(dict2) |
10 |
dict.values() |
11 |
href="https://www.runoob.com/python3/python3-att-dictionary-pop.html" dict.pop(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()三者的区别:
字典推导式的语法格式如下:
{表达式 for 迭代变量 in 可迭代对象 [if条件表达式]} # []中内容可有可无
'''
字典推导式:
自Python2.7以来,列表推导概念就移植到了字典上,从而有了字典推导
'''
- 点赞
- 收藏
- 关注作者
评论(0)