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)的主要内容,如果未能解决你的问题,请参考以下文章

Python学习心得 字典Dictionary

Python学习:字典(dictionary)

Python学习之字典

Python每日学习笔记之Dictionary

python字典学习

一篇彻底掌握Python 字典(Dictionary)的用法