CC00017.python——|Hadoop&Python.v17|——|Arithmetic.v17|语法:数据结构&字典dict.V4|

一、字典 dict
### --- 类似这种销售信息的数据结构,我们使用元组或者列表存储是可以的。
top_sales = [('Peter', 213), ('John', 253), ('Tony', 284), ('Henry', 205), ('Mike', 280)]

### --- 可以很方便的取出在这个榜单中第一名、第二名或者任意一名的销售数据。但它有一个缺点,如果我们想取出特定的某个销售人员的数据时,它会很麻烦。比如如果想要找出Mike的数据,只能去循环遍历,一个个的去比对。
for sale, amount in top_sales:
if sale == 'Mike':
print(sale, amount)
~~~     # 这样不光写起来麻烦,执行效率也很低,假设这是一个庞大的销售数据库,那要花多少时间寻找呢?所以必须使用字典。
一、字典的定义
### --- 使用花括号,可以直接定义字典

sales = {
'Peter': 213,
'John': 253,
'Tony': 284,
'Henry': 205,
'Mike': 280
}
~~~     # 每一行冒号左边的是键(key),右边的是值(value),称作键值对,以逗号分隔开。在这里我们故意写成每行一个键值对,实际并不要求每行一个,只要用逗号分隔开来就可以。键是不能重复的,值可以重复。
~~~     # 对于top_sales 这种两个一组、一一对应的列表来说,可以直接转换为字典。

sales = dict(top_sales)
# sales现在的值变成了
{
'Peter': 213,
'John': 253,
'Tony': 284,
'Henry': 205,
'Mike': 280
}
二、增删改查
~~~     # 有了字典,那现在就可以快速的取出任意一个人的数据了
sales['Mike']
sales['Henry']

~~~     # 注意,键的名称是区分大小写的,'Mike' 和 'mike'分别对应了不同的键。
sales['mike']
# KeyError: 'mike'
~~~     # 这行代码将会报错,因为不存在'mike'这个键。在访问之前,需要先往字典中添加数据相应的键:
# 值可以先设置为None或者0
sales['mike'] = 0

~~~     # 修改字典中的数据:
sales['mike'] = 300

~~~     # 删除字典中的数据
del sales['mike']
三、遍历字典
~~~     # 字典的遍历和列表、元组、字符串有所区别,由于它的每一项都是一个键值对,所以在遍历时也要注意。
for key_value in sales.items():
print(key_value)

~~~     # 注意sales.items() 这种写法,在遍历字典时,这是一种通用的写法。items函数将字典内的内容转换成了一种可迭代的序列,以供for循环遍历,遍历出来的每一项是一个元组,包含了键和值。所以通常我们直接写成这样:
for key, value in sales.items():
print(key, value)
~~~     # 注意中间的逗号和最后的打印结果。
~~~     # 如果不使用items函数,那遍历的就是字典所有的key。

for key in sales:
print(key)
四、字典函数字典有一些函数和列表是一样的,比如clear, copy,这两个不再介绍,我们来看看其他的函数。
### --- get

~~~     # 如果直接访问字典中一个不存在的key,就会产生报错,所以,通常我们如果不确定是否存在某个key时,会先判断一下:
if 'mike' in sales:
print(sales['mike'])
else:
print('mike', 0)
~~~     # in关键字又一次派上用场了, 在这里用in来检查字典中是否包含"mike"这个键,如果包含则返回True,无论"mike"所对应的值是否为空。这样的写法,很麻烦,每次都要先判断,再查询,这时候get函数就派上用场了。

sales.get('mike', 0)

~~~     # 这一行短短的代码就实现了上面4行代码的功能,它表示在字典中查询'mike'键所对应的值,如果不存在'mike'键,则返回0。这里的0可以替换成任何其他的默认值,这样就极大简化代码逻辑。
### --- keys/values

~~~     # 如果只想单独列出所有的销售人员名单,可以这样写:
sales.keys()
~~~     # 可以对它进行遍历
for sale in sales.keys():
print(sale)
~~~     # 如果只想计算出所有销售人员的销售额总和,也就是公司总销售额,可以直接取出value部分并求和:
sum(sales.values())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值