"键值对"的无序可变序列,通过键对象找值对象;
"键是任意不可变数据",如:整数, 浮点型, 字符串, 元祖.但是列表, 字典, 集合这些可变对象不可作为键,键不可重复.
# In:
a = {'name': 'zs', 'age': 18, '身高': [180, 170]}
b = dict(name='ls', age=23, 身高=190)
c = dict([('name', 'ww'), ('age', 20), ('身高', 165)])
print(a, b, c, sep='\n')
#Out:
{'name': 'zs', 'age': 18, '身高': [180, 170]}
{'name': 'ls', 'age': 23, '身高': 190}
{'name': 'ww', 'age': 20, '身高': 165}
#In:
k = ['name', 'age', '身高']
v = ['zs', 12, 165]
d = dict(zip(k, v))
print(d)
#Out:
{'name': 'zs', 'age': 12, '身高': 165}
#In:
a = dict.fromkeys(['name', 'age', '身高'])
print(a)
#Out:
{'name': None, 'age': None, '身高': None}
a = {'name': 'zs', 'age': 18, '身高': [180, 170]}
print(a['name'])
print(a['sex']) # --键不存在会报错
a = {'name': 'zs', 'age': 18, '身高': [180, 170]}
print(a.get('name'))
print(a.get('sex')) # --键不存在会输出None
a = {'name': 'zs', 'age': 18, '身高': [180, 170]}
print(a.items())
a = {'name': 'zs', 'age': 18, '身高': [180, 170]}
print(a.keys(), a.values(), sep='\n')
a = {'name': 'zs', 'age': 18, '身高': [180, 170]}
print(len(a))
a = {'name': 'zs', 'age': 18, '身高': [180, 170]}
print('name' in a) # --返回True or False
a = {'name': 'zs', 'age': 18, '身高': 180}
a['sex'] = 'male' # --没出现的key是新增
a['name'] = 'ls' # -- 出现过的key是替换value
print(a)
a = {'name': 'zs', 'age': 18, '身高': 180}
b = {'name': 'ls', 'sex': 'male'}
a.update(b)
print(a)
a = {'name': 'zs', 'age': 18, '身高': 180}
del(a['name'], a['age']) # --可以同时删除多个键值
print(a)
a = {'name': 'zs', 'age': 18, '身高': 180}
a.clear()
print(a) # -- 输出a是个空字典
a = {'name': 'zs', 'age': 18, '身高': 180}
b = a.pop('name')
print(b, type(b)) # --返回对应值as,是字符串格式
a = {'name': 'zs', 'age': 18, '身高': 180}
b = a.popitem()
print(a, b, sep='\n') # -- 返回的b是删除的键值对
可以方便给多个变量赋值
x, y, z = (10, 20, 30)
(x, y, z) = (10, 20, 30)
[a, b, c] = (10, 20, 30)
print(x) # --返回对应value
print(y)
print(z)
a = {'name': 'zs', 'age': 18, '身高': 180}
name, age, 身高 = a # --返回name
name, age, 身高 = a.values() # --返回name的值
name, age, 身高 = a.items() # --返回键值对
print(name)
扩容
python会根据散列表的拥挤程度扩容
扩容指的是:创造更大的数组,将原有内容拷贝到新数组中
一般接近2/3时,数据就会扩容
集合是无序可变,元素不能重复.
实际上,集合的底层是字典实现
集合的元素就是字典"键值对"的键,所以也是不可变的
a = {1, 2, 3}
a.add(4)
print(a)
a = {1, 2, 3}
a = set((1, 2, 34)) # -- 通过元祖添加
a = set([1, 2, 3]) # -- 通过list添加
a = {1, 2, 3}
a.remove(3)
print(a)
python对集合提供并集, 交集, 差集, 等运算
a = {1, 2, 3}
b = {1, 2, 5}
print(a | b) # --并集
print(a & b) # --交集
print(a - b) # --差集
个人总结,仅供参考