上一篇我们说到了列表和元组,它们的用法相同,但唯一的却别在于列表是可变类型,而元组是不可变类型。今天我们继续聊聊 python 中的另外两个数据类型字典和集合。
首先字典是可变类型,和列表一样也是储存多种类型的数据。但它是无序的所以不可用下标去访问,通常我们会以「健值对」的方式去表示。
注意的是:健必须是唯一的且必须是不可变类型,所以只有字符串,数字,元组才可以作为健。而值可以为任何类型也可相同。
字典的创建方式如下:
dic = {key1 : value1, key2 : value2 }
例如我们创建一个人物信息:
info = {
"name": "六小登登",
"age": 18,
"height": 180,
"tag": ['高', '穷', '帅']
}
我们都知道列表的访问是利用索引访问的。字典利用健访问即可。
info[name] #六小登登
info[age] #18
修改字典元素是利用「健」访问然后重新赋值即可,添加元素是添加新「的健」即可。简单总结就是:健存在就是修改,健不存在就是添加。
比如:
修改元素
info = {'age': 18}
info['age'] = 20
print(info) #{'age': 20}
添加元素
info = {'age': 18}
info['name'] = '六小登登'
print(info) #{'age': 18, 'name': '六小登登'}
字典可以删除点个元素,可以清空整个字典。
删除单个元素或者删除整个字典都可以用 del 语句。
删除单个元素
info = {'age': 18, 'name': '六小登登'}
del info['name']
print(info) #{'age': 18}
删除整个字典
info = {'age': 18, 'name': '六小登登'}
del info
print(info) #此时会打印异常,因为del后字典不存在了。
利用 clear() 方法清空字典
info = {'age': 18, 'name': '六小登登'}
info.clear()
print(info)#{}
字典的 keys方法,values方法,items方法。
info = {'age': 18, 'name': '六小登登'}
print(info.keys()) #['age', 'name']
print(info.values()) #[18, '六小登登']
print(info.items()) #[('age', 18), ('name', '六小登登')]
集合和字典有点相似,首先从形式上都是用 {} 表示。其次它也是无序的。但是它没有「健」。
通常集合表示如下:
{ele1,ele2,...,elen}
看上去它又和列表相似,但是列表是有序的可以通过下标访问,但集合不可以而且元素不可重复。
所以集合有两个特点:
除此之外,因为字典也是{ } 大括号表示。所以空集合不可用{ }创建,它会被当作空对象。要想创建空集合需要用set()方法。
set()也可以将字符串、列表、元组等转换成集合。
set1 = set('abcdabcd')
set2 = set([1,2,3,4,5])
print(set1) #{'c', 'd', 'b', 'a'}
print(set2) #{1, 2, 3, 4, 5}
由此可见我们可以利用集合去重数据是非常好用的。
首先集合没有「健」所以无法通过这个访问,其次集合是无序的又无法通过下标访问。怎么办?所以要想访问集合的值,就必须使用循环结构,把值逐一读取出来。
set1 = {'java', 'javascript', 'python'}
for item in set1:
print(item)
# javascript
# python
# java
add()方法可添加集合元素
set2 = set([1,2,3,4,5])
set2.add(6)
print(set2) #{1, 2, 3, 4, 5, 6}
remove()方法用于删除元素
set2 = set([1,2,3,4,5])
set2.remove(5)
print(set2) #{1, 2, 3, 4}
也可用 del 语句:
set2 = set([1,2,3,4,5])
del set2
print(set2) #删除后集合不存在,会打印错误