python字典的使用

知识点

1.列表是一个有序可变序列

2.字典是一个无序可变的序列

3.不可变序列:字符串str、元组、整数

4.可变序列:列表和字典(都是python内置的数据结构之一)

5.可变序列与不可变序列的区别在于:可变序列通过改变value(值),而id不变达到可变的目的 (可以进行增删改查的操作就是可变的

6.在python中数据保存在内存中可以用3部分来概述,1:id(内存地址) 2:type(数据类型) 3:value(值)。

7.python中的字典是根据key查找value所在的位置(通过计算hash)

8.字典中的所有元素都是一个key-value对,key 不予许重复,而value可以重复

9.字典中的元素是无序的,且key必须是不可变对象。

字典的创建方式

# 教育机构   舒寒科技有限公司
# 学习者     舒寒拽少
# 学习时间:  2022/1/10 10:31
'''字典的创建方式'''
'''使用{}创建字典'''
scores={'张三':100,'李四':98,'王五':45}
print(scores)
print(type(scores))

'''第二种创建字典:dict()'''
student=dict(name='jack',age=20)
print(student)

'''空字典'''
d={}
print(d)
运行结果:
{'张三': 100, '李四': 98, '王五': 45}
<class 'dict'>
{'name': 'jack', 'age': 20}
{}

获取字典的方式

# 教育机构   舒寒科技有限公司
# 学习者     舒寒拽少
# 学习时间:  2022/1/10 10:48
'''获取字典的元素'''
scores={'张三':100,'李四':98,'王五':45}
'''第一种方式,使用[]'''
print(scores['张三'])
# print(scores['陈六'])  KeyError: '陈六'(报错)

'''第二种方式。使用get()方法'''
print(scores.get('张三'))
print(scores.get('陈六'))  #None  不存在返回None
print(scores.get('麻七',99))#不存在,会返回99这个值。


运行结果:
100
100
None
99

字典的增删改查

# 教育机构   舒寒科技有限公司
# 学习者     舒寒拽少
# 学习时间:  2022/1/10 11:01
print('-----字典的增删查改--------')

scores={'张三':100,'李四':98,'王五':45}
scores['赵六'] = 98
print(scores)

del scores['赵六']
print(scores)
'''scores.clear()
print(scores)'''#清空操作

print('张三' in scores)
print('张三' not in scores)

scores['王五']=55
print(scores)
运行结果:
-----字典的增删查改--------
{'张三': 100, '李四': 98, '王五': 45, '赵六': 98}
{'张三': 100, '李四': 98, '王五': 45}
True
False
{'张三': 100, '李四': 98, '王五': 55}

获取字典视图

# 教育机构   舒寒科技有限公司
# 学习者     舒寒拽少
# 学习时间:  2022/1/10 11:10
print('---------获取字典视图-------------- ')
scores={'张三':100,'李四':98,'王五':45}

#获取所有的key
keys=scores.keys()
print(keys)
print(type(keys))
print(list(keys)) #将所有的key组成的视图转成列表

#获取所有的value
values=scores.values()
print(values)
print(type(values))
print(list(values))#将所有的value组成的视图转成列表

#获取所拥有的key-value对
items=scores.items()
print(items)
print(list(items))#转换之后的列表元素是由元组组成
运行结果:
---------获取字典视图-------------- 
dict_keys(['张三', '李四', '王五'])
<class 'dict_keys'>
['张三', '李四', '王五']
dict_values([100, 98, 45])
<class 'dict_values'>
[100, 98, 45]
dict_items([('张三', 100), ('李四', 98), ('王五', 45)])
[('张三', 100), ('李四', 98), ('王五', 45)]

视图的遍历

# 教育机构   舒寒科技有限公司
# 学习者     舒寒拽少
# 学习时间:  2022/1/10 13:38
'''字典元素的遍历'''
scores={'张三':100,'李四':98,'王五':45}
for item in scores:
    print(item,scores[item],scores.get(item))

    
运行结果:
张三 100 100
李四 98 98
王五 45 45

字典的特点:可变无序性

# 教育机构   舒寒科技有限公司
# 学习者     舒寒拽少
# 学习时间:  2022/1/10 13:52
d={'name':'张三','name':'李四'}#key不能重复,重复就会覆盖
print(d)
f={'name':'张三','age':'张三'}#value 可以重复’
print(f)

#list列表是可以选择在任何位置插入的,而字典是不行的
lst1=[10,20,30]
lst1.insert(1,100)
print(lst1)


运行结果:
{'name': '李四'}
{'name': '张三', 'age': '张三'}
[10, 100, 20, 30]

字典生成式

# 教育机构   舒寒科技有限公司
# 学习者     舒寒拽少
# 学习时间:  2022/1/10 14:18
items=['Fruits','Books','Others']
price=[96,78,85,100,200] #像这个多的都是以上面那个少的进行打包输出。

d={item.upper():price for item,price in zip(items,price)}
print(d)
#upper是变大写的意思

运行结果:
{'FRUITS': 96, 'BOOKS': 78, 'OTHERS': 85}