python的字典dict数据类型是以键值对的方式设计的,并用花括号“{}”括起来,即{key : value},多个键值对用逗号隔开。字典是python数据类型中非常重要的一种,是机器学习的决策树算法当中的基本数据结构。
其中,字典的key是不可修改的(但可以删除),可以用整数、字符串、byters和元组表示,其中最常用的是字符串。列表、字典、集合等则不可以作为字典的key,并且key必须是唯一的,相同的话将覆盖掉原先的value值。
与列表、元组等一样,我们也将讲解一下字典Dict的创建和增删改等基本用法。
python字典dict的创建声明
python字典的创建声明与前面介绍的其他数据类型,如列表list,元组tuple等基本一致,只是所运用的符号有所不同。
a_dict = dict(name='DYX', age=24) # 键=值对
print(a_dict) # {'age': 24, 'name': 'DYX'}
字典元素的访问
与列表类似,可以使用下标的方式来访问字典中的元素,但不同的是字典的下标是字典的“键”,而列表和元组访问时下标必须为整数值。使用下标的方式访问字典“值”时,若指定的键不存在则抛出异常。
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
print(dict1['name']) # 张三
print(dict1['id']) # 报错
字典元素的修改
字典序列[key] = 值
通过键进行重新赋值,便可修改字典的元素,注意字典的键是不能修改的,只能添加或删除。
>>> a = dict(x=1,y=2,z=3) >>> a {'x': 1, 'y': 2, 'z': 3} >>> a['x'] = 'x1y1z1.com' #通过重新赋值,便可对字典元素进行修改 >>> a {'x': 'x1y1z1.com', 'y': 2, 'z': 3}
update()方法添加键值对
字典对象的update()方法,可以将另一个字典全部添加到当前字典中,如果两个字典中存在相同的“键”,则以另一个字典中的“值”为准,对当前字典进行更新。
a_dict = { 'ranking': [98, 97] , 'age': 24 , 'name': 'DYX' , 'sex': 'male' }
#字典中的“值”可以是列表、数字、字符串元组等等,是很宽泛的
#字典中的“键”要注意不能使用列表、集合、字典作为字典的“键”
print(a_dict.items())
#dict_items([('sex', 'male'), ('age', 24), ('name', 'DYX'), ('ranking', [98, 97])])
a_dict.update( {'a':'a','b':'b'} )
print(a_dict) #查看添加后的字典
#{'sex': 'male', 'age': 24, 'ranking': [98, 97], 'name': 'DYX', 'a': 'a', 'b': 'b'}
字典元素的删除方法、字典清空方法和删除字典方法
>>> a = dict(x=1,y=2,z=3)
>>> a
{'x': 1, 'y': 2, 'z': 3}
>>> del a['x'] #删除字典a中键为'x'的键和对应的值
>>> a
{'y': 2, 'z': 3}
>>> b = a.pop('y') #通过pop()函数弹出(删除)对应的键值,返回键对应的值
>>> b
2
>>> a
{'z': 3}
>>> a.clear() #清空字典
>>> a
{}
>>> del a #删除字典
>>> a #字典a已经不存在,a成为未声明not defined的变量
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
字典dict的常用函数,及迭代循环
for循环遍历字典
### 遍历字典的key
```python
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
for key in dict1.keys():
print(key)
# name
# age
# gender
```
### 遍历字典的value
```python
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
for value in dict1.values():
print(value)
# 张三
# 20
# 男
```
### 遍历字典的元素
```python
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
for value in dict1.items():
print(value)
# ('name', '张三')
# ('age', 20)
# ('gender', '男')
```
# 集合
集合
集合(set)是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
s1 = {10, 20, 30, 40, 50}
print(s1)
s2 = {10, 30, 20, 10, 30, 40, 30, 50}
print(s2)
s3 = set('abcdefg')
print(s3)
s4 = set()
print(type(s4)) # set
s5 = {}
print(type(s5)) # dict
-
集合可以去掉重复数据;
-
集合数据是⽆序的,故不⽀持下标
集合常见操作方法
增加数据
add()
需要注意的是,使用 add() 方法添加的元素,只能是数字、字符串、元组或者布尔类型(True 和 False)值,不能添加列表、字典、集合这类可变的数据,否则 Python 解释器会报 TypeError 错误。
s1 = {10, 20} s1.add(100) s1.add(10) print(s1)
因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进⾏任何操作
update() 重点要记常用
追加的数据是序列。
s1 = {10, 20} # s1.update(100) # 报错 s1.update([100, 200]) s1.update('abc') print(s1)
删除数据
remove()
删除集合中的指定数据,如果数据不存在则报错。
s1 = {10, 20} s1.remove(10) print(s1) s1.remove(10) # 报错 print(s1)
discard()
删除集合中的指定数据,如果数据不存在也不会报错。
s1 = {10, 20} s1.discard(10) print(s1) s1.discard(10) print(s1)
pop()
随机删除集合中的一个数据,并返回这个数据。
s1 = set('12345') del_num = s1.pop() print(del_num) print(s1)
查找数据
in:判断数据在集合序列 not in:判断数据不在集合序列