dict
dict是Python的字典(dictionary)
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
key是唯一的,重复的键值对会替换前者,值不需要唯一
例如下面这个例子:
d = {'key1': 'value1', 'key2': 'value2', 'key2': 'value3'}
print(d)
猜猜会输出什么呢??
既然前面说了后面的会替代前面的,那么肯定会输出
{'key1': 'value1', 'key2': 'value3'}
说完dict的特点,我们来说说该怎么获得里面的值呢?
d = {'key1': 'value1', 'key2': 'value2', 'key2': 'value3'}
print(d['key1'])
这样就取出来了key1对应的值 value1
此外还有一种办法,就是字典的get()方法
d = {'key1': 'value1', 'key2': 'value2', 'key2': 'value3'}
print (d.get('key1'))
那么你可能会问了, 如果我这个key在字典里面不存在怎么办呢?
如果你在新华字典里面查不到一个词怎么办呢? 那你肯定会把字典扔一边里去骂娘了.
Python也是,只不过他不会骂娘,他会出现一个异常叫做keyError,你可以实际的操作下.
但是你又是一个傲娇的人,你觉得一个keyerror觉得自己很没有水平,没关系. pyhton满足你的虚荣心
d = {'key1': 'value1', 'key2': 'value2', 'key2': 'value3'}
print (d.get('key3', '猜猜我有没有?'))
字典的key在内部存储的顺序是无序的,所以print(d)的值和入参的顺序可能是不一致
注意
dict的特点:
-
查找和插入的速度极快,不会随着key的增加而变慢
-
需要占用大量的内存,内存浪费多
list的特点:
-
查找和插入的时间随着元素的增加而增加
-
占用空间小,浪费内存很少
那么都有什么能作为key呢?
由于字典中的key是不可变的
所以字符串和整数等都一般会成为我们作为key的首选
而对象则是万万不能作为一个key的
一般的话字符串作为key的情况多
上面我们介绍了获取字典中的元组,既然叫字典了,那么我们肯定会有修订
修改字典的元素
d = {'key1': 'value1', 'key2': 'value3'}
d['key1'] = 'value111'
print (d.get('key1', '猜猜我有没有?'))
增加字典的元素
d = {'key1': 'value1', 'key2': 'value3'}
d['key3'] = 'value3'
print (d.get('key3', '猜猜我有没有?'))
删除字典中的元素
d = {'key1': 'value1', 'key2': 'value3'}
del d['key1']
# 这里会输出猜猜我有没有?
print (d.get('key1', '猜猜我有没有?'))
d['key1'] = 'value111'
# 这里会输出 value111
print (d.get('key1', '猜猜我有没有?'))
还有一些方法在这里就不一一列举了
序号 | 函数 | 描述 |
---|---|---|
1 | dict.clear() | 删除字典内所有元素 |
2 | dict.copy() | 返回一个字典的浅复制 |
3 | dict.has_key(key) | 键在字典dict里 |
4 | dict.items() | 以列表返回可遍历的元组数组 |
5 | dict.keys() | 以列表返回一个字典所有的键 |
6 | dict.update(dict2) | 把字典dict2更新到dict里 |
7 | dict.values() | 以列表返回字典中的所有值 |
set
set和list类似,但是特性和字典类似,set和dict的底层实现是相似的
set中是去重无序的,即在set中是没有重复的元素的,参数内部顺序和进出入顺序不一定是一致的
有一点需要注意:
s = ('set')
print(s)
# 第二种创建方式
s = (['s','e','t'])
print(s)
这样就创建出了一个set集合
增加元素
s = ('set')
print(s)
# 第二种创建方式
s1 = (['s','e','t'])
print(s1)
# 这个set1不会象上面一样被拆分,这就是一个值
s.add('set1')
print(s)
删除元素
s.remove('s')
同时set还可以做交集和并集
s = ('set')
print(s)
# 第二种创建方式
s1 = (['s','e','t', '1'])
print(s1)
print(s1 & s)
print(s1 | s)
思考一下都会输出什么?
dict和set就先到这里