Python学习:字典(dictionary)
Posted 悾格
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习:字典(dictionary)相关的知识,希望对你有一定的参考价值。
Python学习:字典(dictionary)
异常处理小技巧
异常
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。
异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
捕捉异常可以使用try except
语句。
try except
语句用来检测try
语句块中的错误,从而让except
语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try
里捕获它。
"""
example01 - 小技巧
Author:悾格
Date: 2021/7/30
"""
flag = True
while flag:
try: # 把可能出现状况的代码保护起来执行
a, b, c = map(int, input('请输入三条边的长度:').split())
print(a, type(a))
print(b, type(b))
print(c, type(c))
break
except ValueError: # 如果出现了状况。通过except进行错误捕获,然后执行相应的处理代码
print('输入错误,请重新输入!!!')
字典
在这之前我们已经学了列表、元组、字符串、集合,而列表、元组以及集合都是容器型数据类型,但是在当我们想要存储一个人甚至100人的个人信息时就会发现,之前的数据类型不是很理想,一个人的信息不是一个值,而是一堆的变量,如下:
# 列表为例
message = [1001, '悾格', True, '1999-12-31']
相信大家看到这个,都基本上能猜到他们的具体是啥,但是这只是一个人的信息,如果是两个人的,那么在列表中再嵌套一个列表,来表示不同的人,可是我们却不能清楚的知道这个值含义是啥,是谁的。
所以,为了处理这个数据带来的问题,就产生了一个新的可变容器数据类型——字典(dictionary)
字典组成
元素由键和值两部分组成,冒号前面的称为键,冒号后面的称为值,合在一起叫键值对
student = {
'id': 210502,
'name': '悾格',
'sex': '男'
}
如上,就可以看出这组数据是:一个学号为210502,姓名为悾格的男同学。
字典的创建和使用
"""
example02 - 字典的创建和使用
Author:悾格
Date: 2021/7/30
"""
# 字面量语法
student1 = {
'id': 1001,
'name': '悾格',
'sex': True,
'birthday': '1999-12'
}
print(student1)
print(len(student1))
# 遍历字典中的键
for key in student1.keys():
print(key, student1[key])
print('-' * 20)
# 遍历字典中的值
for value in student1.values():
print(value)
print('-' * 20)
# 遍历字典中的键值对
for key, value in student1.items():
print(key, value)
print('-' * 20)
# 构造器函数
student2 = dict(id=1002, name='空格', sex=True, birthday='1999-01')
print(student2)
# 生成式(推导式)语法
# list1 = [i for i in range(1, 10)]
# print(list1)
# set1 = {i for i in range(1, 10)}
# print(set1)
dict1 = {i: i ** 2 for i in range(1, 10)}
print(dict1)
# 生成器
# gen_obj = (i for i in range(1, 10))
# for value in gen_obj:
# print(next(gen_obj))
字典的运算
"""
example03 - 字典的运算
Author:悾格
Date: 2021/7/30
"""
student2 = dict(id=1002, name='悾格', sex=True, birthday='1999-01')
# 字典的索引运算放在赋值运算符的左边
# 如果索引对应的键是存在的,就更新它的值
student2['name'] = '王大娘'
student2['sex'] = False
# 如果字典中没有对应的索引,就增加一组新的“键值对”
student2['address'] = '贵州镇远'
print(student2)
print('name' in student2)
print('age' in student2)
print('address' in student2)
# 通过get函数通过获取value时,如果ke不存在,不会发生KeyError错误
# 而是得到一个None(空值)
print(student2.get('age'))
print(student2.get('age', 20))
print(student2.get('name', '无名氏'))
# 删除键值对
# del student2['name']
print(student2.pop('name'))
print((student2.get('name', '无名氏')))
# 如果要使用下标(索引)运算,那么必须要保证键一定在
if 'birthday' in student2:
print(student2['birthday'])
字典的相关操作
"""
example04 - 字典的相关操作
Author:悾格
Date: 2021/7/30
"""
dict1 = {'A': 100, 'B': 200, 'C': 300}
dict2 = {'D': 400, 'E': 500, 'A': 600}
# 更新(元素的合并或更新)
dict1.update(dict2)
print(dict1)
# 删除 ---> 键必须存在,如果不存在会产生KeyError
# del dict1['B']
dict1.pop('B')
# 删除最后一个键
dict1.popitem()
print(dict1)
print(dict1.setdefault('C', 800))
print(dict1.setdefault('K', 10000))
print(dict1)
# 清空所有
dict1.clear()
print(dict1)
小案例
"""
example05 - 字典中保存了股票信息,完成下面的操作
1,找出股票价格大于100元的股票并创建一个新的字典
2.找出价格最高和最低的股票对应的股票代码
3.按照股票价格从高到低给股票代码排序
Date: 2021/7/30
"""
stocks = {
'AAPL': 191.88,
'GOOG': 1186.96,
'IBM': 149.24,
'ORCL': 48.44,
'ACN': 166.89,
'FB': 208.09,
'SYMC': 21.29
}
# stocks1 = {}
# for key, value in stocks.items():
# if value > 100:
# stocks1[key] = value
# print(stocks1)
# print(len(stocks))
new_stocks = {key: value for key, value in stocks.items() if value > 100}
print(new_stocks)
# words = ['apple', 'zoo', 'watermelon', 'zealot', 'internationalization', 'pear']
# print(max(words, key=len))
# print(min(words, key=len))
# words.sort(key=len)
# print(words)
print('-' * 20)
keys = ['AAPL', 'GOOG', 'IBM', 'ORCL', 'ACN', 'FB', 'SYMC']
print(max(stocks, key=stocks.get))
print(min(stocks, key=stocks.get))
print(sorted(stocks, key=stocks.get, reverse=True))
# print(max(zip(stocks.values(), stocks.keys()))[1])
# _, max_code = max(zip(stocks.values(), stocks.keys()))
# print(max_code)
# print(min(zip(stocks.values(), stocks.keys()))[1])
dict1 = {'A': 1, 'B': 2, 'C': 3, 'D': 4}
dict2 = dict(zip(dict1.values(), dict1.keys()))
print(dict1)
print(dict2)
以上是关于Python学习:字典(dictionary)的主要内容,如果未能解决你的问题,请参考以下文章