学习Python第二周的第五天

学习Python第二周的第五天

常用数据结构之字典

Python程序中的字典跟现实生活中的字典很像,它以键值对(键和值的组合)的方式把数据组织到一起,我们可以通过键找到与之对应的值并进行操作。就像《新华字典》中,每个字(键)都有与它对应的解释(值)一样,每个字和它的解释合在一起就是字典中的一个条目,而字典中通常包含了很多个这样的条目。

1、字典的创建

在Python中创建字典可以使用{}字面量语法,这一点跟上一节课讲的集合是一样的。但是字典的{}中的元素是以键值对的形式存在的,每个元素由:分隔的两个值构成,:前面是键,:后面是值,代码如下所示。

# 字面量语法
student1 = {
    'id': 1034,
    'name': 'zhou',
    'sex': True,
    'birthday': 1998-5
}
print(student1)


# 构造器函数
student2 = dict(id=1034, name='zhou', sex=True)
print(student2)

2、字典的运算

student1 = {
    'id': 1034,
    'name': 'zhou',
    'sex': True,
    'birthday': 1998
}
print(student1)


# 遍历字典中的键
for key in student1.keys():
    print(key)
print('-' * 20)


# 遍历字典中的值
for value in student1.values():
    print(value)
print('-' * 20)


# 遍历字典中的键值对
for key, value in student1.items():
    print(key, value)


student = dict(id=1034, name='zhou', sex=True, birthday=1998)
# 字典的索引运算放在赋值运算符的左边,且索引对应的键是存在的,就更新它的值
student['name'] = '小黄'
student['sex'] = False
# 字典的索引运算放在赋值运算符的左边,但字典中没有对应的索引,就增加一组新的“键值对”
student['address'] = '重庆'
print(student)

print('name' in student)
print('age' in student)
print('address' in student)

# 使用get函数通过key获取value时,如果key不存在,不会发生keyError错误,
# 而是得到一个None(空值)或者是你指定的默认值。
print(student.get('age'))
print(student.get('age', 20))
print(student.get('name'))

# 删除键值对--->键必须存在,如果不存在会产生KeyError错误
# del student['name']
print(student.pop('name'))


# 如果要使用下标(索引)运算,那么必须要保证键一定存在
if 'birthday' in student:
    print(student['birthday'])

3、字典的相关操作

dict1 = {'A': 100, 'B': 200, 'C': 300}
dict2 = {'D': 400, 'E': 500, 'A': 600}

# 更新(元素的合并或更新)
dict1.update(dict2)
print(dict1)

# 删除
del dict1['B']
print(dict1)             # 直接删除,不会返回删除的值
print(dict1.pop('A'))    # 会把删除的元素返回
print(dict1)
dict1.popitem()   # 是删除最后一个键值对
print(dict1)


# 输入一段话,统计每个英文字母出现的次数
x = input('请输入一段话:')
b = {}
for i in range(26):
    b[f'{chr(i + 97)}'] = x.count(f'{chr(i + 97)}')
print(b)


# 方法二
import string

results = {letter: 0 for letter in string.ascii_lowercase}
print(results)
content = input('请输入:').lower()
for ch in content:
    if ch in results:
        results[ch] += 1
for key, value in results.items():
    print(f'{key}: {value:>2d}次')

4、例题

字典中保存了股票信息,完成下面的操作
1.找出股票价格大于100元的股票并创建一个新的字典
2.找出价格最高和最低的股票对应的股票代码
3.按照股票价格从高到低给股票代码排序
stocks = {
    'AAPL': 191.88,
    'GOOG': 1186.96,
    'IBM': 149.24,
    'ORCL': 48.44,
    'ACN': 166.89,
    'FB': 208.09,
    'SYMC': 21.29
}
# new_stcoks = {}
# for key, value in stocks.items():
#     if value > 100:
#         new_stcoks[key] = value
# print(new_stcoks)

new_stcoks = {key: value for key, value in stocks.items() if value > 100}
print(new_stcoks)

print('-' * 35)
# 找出价格最高和最低的股票对应的股票代码
print(max(zip(stocks.values(), stocks.keys()))[1])
# 分解动作
zip_obj = zip(stocks.values(), stocks.keys())
max_value = max(zip_obj)
print(max_value[1])

print(min(zip(stocks.values(), stocks.keys()))[1])
zip_obj = zip(stocks.values(), stocks.keys())
min_value = min(zip_obj)
print(min_value[1])

print('-' * 33)
# 改进
print(max(stocks, key=stocks.get))
print(min(stocks, key=stocks.get))
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值