- 字典
字典不同于寻常序列,他可以以关键字为索引,关键字为不可变类型,通常为字符串或数组。
可以用id()判断该数据是否为不可变类型。对其中进行某种操作,若前后数据发生改变,则为不可变类型。反之,则为可变类型。
i=1
print(id(i))
i=i+1
print(id(i))
1708846896
1708846928
可见整数为不可变类型
另一种方法使用hash(),若输出结果不是错误,则该数据为不可变类型
print(hash('asd'))
print(hash(("sda",154,6)))
-5762928790536099348
7189613897085005524
由此可见字符与元组也是不可变类型,而列表不能够被hash,所以他是可变类型
字典使用大括号括起来,逗号隔开
冒号分开键和值,同一字典中,键是不能重复的。
dict 内部存放的顺序和 key 放入的顺序是没有关系的。
dict 查找和插入的速度极快,不会随着 key 的增加而增加,但是需要占用大量的内存。
把数据放入 dict 还可以直接通过 key 放入。
一个 key 只能对应一个 value,多次对一个 key 放入 value,后面的值会把前面的值冲掉。
dict5 = dict(a=1, b=2, c=3)
print(dict5)
# {'b': 2, 'a': 1, 'c': 3}
dict5['a'] = 11
print(dict5)
# {'b': 2, 'a': 11, 'c': 3}
dict5['d'] = 4
print(dict5)
# {'d': 4, 'c': 3, 'a': 11, 'b': 2}
和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
- 集合
与dict类似,set也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
a=set([1,2,3])
print(a)
{1, 2, 3}
注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。
通过add(key)方法可以添加元素到set中
通过remove(key)方法可以删除元素
a=set([1,2,3])
a.add(4)
a.remove(2)
print(a)
{1, 3, 4}
除此之外,set可以进行交集或并集的操作
a=set([1,2,3])
a.add(4)
a.remove(2)
print(a)
b=set([2.5,4])
print(a|b)
print(a&b)
{1, 3, 4}
{1, 2.5, 3, 4}
{4}