Python学习笔记4——字典

1、关于字典
(1)字典(二人世界):冒号之前的叫键,冒号之后的叫值
(2)列表是有序序列,第一个放进列表的就在第一个位置,第二个放进列表的就在第二个位置;而字典是无序序列,第一个放进列表的不一定在第一个位置…因为在往字典内存储时,要经过一个hash()的工序
(3)可变序列:可以进行增删改操作的,如列表、字典
不可变序列,如字符串、元组

2、字典的创建方式
2.1 使用{}创建字典

scores = {'张三':100,'李四':98,'王五':45}
print(scores)
print(type(scores))

输出结果:
{‘张三’: 100, ‘李四’: 98, ‘王五’: 45}
<class ‘dict’>

2.2 使用dict()创建字典

student = dict(name='jack',age=20)
print(student)

输出结果:
{‘name’: ‘jack’, ‘age’: 20}

3、字典元素的获取

scores = {'张三':100,'李四':98,'王五':45}

3.1 第一种方式:用[ ]

print(scores['张三'])
#print(scores['陈六'])    #输入不存在的键,会报 KeyError: '陈六'

输出结果:
100

3.2 第二种方式:用get()方法

print(scores.get('张三'))
print(scores.get('陈六'))   #输入不存在的键,不会报错,会输出None   注意与[]区别
print(scores.get('麻七',99))   #这个99是在用get函数查找‘麻七’所对应的value不存在时,提供的一个默认值

输出结果:
100
None
99

3.3 [ ]方法和get()方法的区别
两种方法最大的区别在于,输入不存在的键时,[ ] 会报错,而get()方法不会报错,会输出None或者输出指定的默认值

4、字典中键key的判断

scores = {'张三':100,'李四':98,'王五':45}
print('张三' in scores)
print('张三' not in scores)

输出结果:
True
False

5、字典元素的删除
5.1 删除指定的key-value对

#删除指定的key-value对
del scores['张三']
print(scores)

输出结果:
{‘李四’: 98, ‘王五’: 45}

5.2 清空字典的元素

#清空字典的元素
scores.clear()
print(scores)

输出结果:
{}

6、字典元素的新增

scores = {'张三':100,'李四':98,'王五':45}
scores['陈六'] = 98     #直接加
print(scores)

输出结果:
{‘张三’: 100, ‘李四’: 98, ‘王五’: 45, ‘陈六’: 98}

7、字典元素的修改

scores['陈六'] = 100   #直接改
print(scores)

输出结果:
{‘张三’: 100, ‘李四’: 98, ‘王五’: 45, ‘陈六’: 100}

8、获取字典视图
8.1 获取所有的键key

#获取所有的key
scores = {'张三':100,'李四':98,'王五':45}
keys = scores.keys()
print(keys)
print(type(keys))
print(list(keys))   #将所有key组成的视图转成列表

输出结果:
dict_keys([‘张三’, ‘李四’, ‘王五’])
<class ‘dict_keys’>
[‘张三’, ‘李四’, ‘王五’]

8.2 获取所有的值value

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

输出结果:
dict_values([100, 98, 45])
<class ‘dict_values’>
[100, 98, 45]

8.3 获取所有的键-值key-value对

#获取所有的key-value对
items = scores.items()
print(items)
print(type(items))
print(list(items))     #转换之后的列表元素是由元组组成

输出结果:
dict_items([(‘张三’, 100), (‘李四’, 98), (‘王五’, 45)])
<class ‘dict_items’>
[(‘张三’, 100), (‘李四’, 98), (‘王五’, 45)]

9、字典元素的遍历

for item in scores:
    print(item)   #只会输出键

for item in scores:    #输出键-值对(两种获取值的方式)
    print(item,scores[item],scores.get(item))

输出结果:
张三
李四
王五
张三 100 100
李四 98 98
王五 45 45

10、字典的特点
10.1 所有元素都是key-value对,键key不允许重复,值value允许重复

d = {'name':'张三','name':'李四'}
print(d)    #键不允许重复,会出现覆盖的情况

d = {'name':'张三','nikename':'张三'}
print(d)     #值允许重复

输出结果:
{‘name’: ‘李四’}
{‘name’: ‘张三’, ‘nikename’: ‘张三’}

从以上结果可以看出,当出现两个相同的键名时,出现了覆盖的情况

10.2 字典的元素是无序的
无法在字典中指定位置插入元素,因为是无序的

10.3 字典中的键key必须是不可变对象,字符串等 ,不能是列表(可变序列)

# lst = [10,20,30]
# d = {lst:100}
# print(d)    #报错  TypeError: unhashable type: 'list'

10.4 字典也可以根据需要动态地伸缩

10.5 字典会浪费较大的内存,是一种空间换时间的数据结构
字典查找速度很快,不管有多少元素,只需要通过哈希函数hash()计算存储位置,即可找到元素

11、字典生成式
利用zip()函数

items = ['Fruits','Books','Other']
prices = [96,78,85,100,120]

d = {item.upper():price    for item,price in zip(items,prices)}   #upper()函数是转换为大写字母的函数
print(d)     #若两个列表长度不同,则以长度短的那个为准

输出结果:
{‘FRUITS’: 96, ‘BOOKS’: 78, ‘OTHER’: 85}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值