Python学习笔记10_字典(Dictionary)
- 字典是另一种可变容器模型,且可存储任意类型对象。
- 字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中
- 字典的值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
- 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被存储
- 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
- 字典的格式如下:
d = {key1 : value1, key2 : value2, key3 : value3 }
1、字典创建
- 键必须是唯一的,但值则不必。
- 值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
1.1、空字典创建
1)使用大括号 { } 创建空字典:
# 使用大括号 {} 来创建空字典
emptyDict = {}
2)使用内建函数 dict() 创建字典:
# 使用内建函数dict()创建空字典:
emptyDict = dict()
2、访问字典里的值
1)把相应的键放入到方括号中
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("tinydict['Name']: ", tinydict['Name'])
2)如果用字典里没有的键访问数据,会报错:
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("tinydict['Alice']: ", tinydict['Alice'])
# 报错内容
Traceback (most recent call last):
File "test.py", line 5, in <module>
print ("tinydict['Alice']: ", tinydict['Alice'])
KeyError: 'Alice'
3)使用字典的 get 方法
person = {'name': 'zhangsan', 'age': 18,'x':'y'}
print(person.get('name'))
# 如果 key 不存在,会默认返回 None,而不报错
print(person.get('whit')) # None
# 如果 key 不存在,可以返回给定值
print(person.get('geter','falge')) # falge
3、修改字典
1)向字典添加新内容的方法是增加新的键/值对,通过键添加键值对
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
# 使用key修改对应的value
tinydict['Age'] = 8
# 添加新的键值对
tinydict['day'] = "Wed"
2)使用字典的 update 方法合并两个字典
person1 = {'name': 'zhangsan', 'age': 18}
person2 = { 'heighe': 185, 'whit': 65}
person1.update(person2)
print(person1)
4、字典的删除操作
- 使用 del() 方法删除单一的元素
- 使用 clear() 方法清空字典
- 使用 del() 方法删除整个字典
- 使用字典的 pop方法,把key对应的键值对删除了,并返回value值
- 使用字典的popitem()方法,删除一个键值对,并返回一个由该键值对组成元素的元组
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del tinydict['Name'] # 删除键 'Name'
tinydict.clear() # 清空字典
del tinydict # 删除字典
person = {'name': 'zhangsan', 'age': 18, 'heighe': 185, 'whit': 65}
print(person.pop('age')) # 把key对应的键值对删除了,并返回value值
print(person.popitem()) # 删除一个键值对,并返回一个由该键值对组成元素的元组
5、字典的遍历
person = {'name': 'zhangsan', 'age': 18, 'heighe': 185, 'whit': 65}
# 字典遍历
# 方法一:
for k in person: # k 获取的是 key
print(k, ':', person[k])
# 方法二:
print(person.keys()) # dict_keys(['name', 'age', 'heighe', 'whit'])
for k in person.keys(): # keys() 方法是获取字典的key
print(k, ':', person[k])
# 方法三:
print(person.values()) # dict_values(['zhangsan', 18, 185, 65])
for v in person.values(): # 使用 values() 方法获取字典的value
print(v) # 只能打印 value
# 方法四:
print(person.items()) # items() 方法获取的是字典的键值对
# dict_items([('name', 'zhangsan'), ('age', 18), ('heighe', 185), ('whit', 65)])
for k, v in person.items(): # 利用了拆包方法
print(k, ':', v)
'''常用方法一和方法四'''
6、字典推导式
# 交换key,value
person = {'name': 'zhangsan', 'age': 18, 'heighe': 185, 'whit': 65}
# 方法一:
person1 = {}
for k,v in person.items():
person1[v] = k
person = person1
# 方法二:推导式
person={v:k for k,v in person.items()} # 交换key和value
print(person)
7、字典内置函数&方法
函数 | 描述 |
---|---|
len(dict) | 计算字典元素个数,即键的总数。 |
str(dict) | 输出字典,可以打印的字符串表示。 |
type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型。 |
函数 | 描述 |
---|---|
dict.clear() | 删除字典内所有元素 |
dict.copy() | 返回一个字典的浅复制 |
dict.fromkeys() | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
dict.get(key,default=None) | 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
key in dict | 如果键在字典dict里返回true,否则返回false |
dict.items() | 以列表返回键值对的视图对象 |
dict.keys() | 返回键的视图对象 |
dict.setdefault(key,default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
dict1.update(dict2) | 把字典dict2的键/值对合并到dict1里 |
dict.values() | 返回值的视图对象 |
pop(key[,default]) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
popitem() | 返回并删除字典中的最后一对键和值。 |