python字典

dict_python

  • 字典(dicy)是一种可变的数据结构,它是由键(key)和对应的值(value)组成的无序集合。
  • 字典中的键必须是唯一的,而值可以是任意类型的对象。可以使用大括号 {} 来创建一个字典,并使用冒号 : 来分隔键和值。

1.字典的实现原理

  • 字典的实现原理与查字典类似,查字典是先根据部首或拼音查找对应的页码,python中的字典是根据key查找value所在的位置。

2.字典的特点

  • 字典中的所有元素都是一个 key-value 对,key不允许重复,value可以重复
  • 字典中的元素是无序的
  • 字典中的key必须是不可变对象
  • 字典可以根据需要动态地伸缩
  • 字典会浪费较大的内存,是一种使用空间换时间的数据结构

3.字典的创建

  • 最常用的创建方式:使用花括号
scores = {'张三': 100, '李四': 98, '王五': 45}
# {'张三': 100, '李四': 98, '王五': 45}
  • 使用内置函数
student = dict(name = 'Jack', age = 20);
# {'name': 'Jack', 'age': 20}
  • 空字典
d = {}
d2 = dict()
# {}

4.字典的常用操作

  • []取值与使用get()取值的区别
  • []如果字典中不存在指定的key,抛出KeyError异常
  • get()方法取值,如果字典中不存在指定的key,并不会抛出KeyError;
    而是返回None,可以通过参数设置默认的value,以便指定的key不存在时返回
scores = {'张三': 100, '李四': 98, '王五': 45}

print(scores['张三'])  # 100
print(scores.get('张三'))  # 100

print(scores['美羊羊'])  # 报错:KeyError: '美羊羊'
print(scores.get('美羊羊'))  # None
print(scores.get('沸羊羊', 99))  # 99是在查找指定的key不存在返回的默认结果 
  • 判断指定元素是否存在字典中
  • in: 存在返回True
  • not in: 不存在返回False
scores = {'张三': 100, '李四': 98, '王五': 45}

print('张三' in scores)  # True
print('张三' not in scores)  # False
  • 新增、删除、修改、清空
scores = {'张三': 100, '李四': 98, '王五': 45}

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

del scores['张三']  # 删除指定的key-value对
print(scores)  # {'李四': 98, '王五': 45, '陈六': 89}

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

scores.clear()
print(scores)  # {}
  • 获取字典视图的三个方法
方法含义
keys()获取字典中所有key
values()获取字典中所有value
items()获取字典中所有key,value对
scores = {'张三': 100, '李四': 98, '王五': 45}

# 获取所有的key
keys = scores.keys()
print(keys)  # dict_keys(['张三', '李四', '王五'])
print(type(keys))  # <class 'dict_keys'>
print(list(keys))  # ['张三', '李四', '王五'] 将所有的key组成的视图转成列表

# 获取所有的value
values = scores.values()
print(values)  # dict_values([100, 98, 45])
print(type(values))  # <class 'dict_values'>
print(list(values))  # [100, 98, 45]

# 获取所有的 key-value 对
item = scores.items()
print(item)  # dict_items([('张三', 100), ('李四', 98), ('王五', 45)])
print(list(item))  # [('张三', 100), ('李四', 98), ('王五', 45)] 转换之后的列表元素是由元组组成
  • 字典元素的遍历
scores = {'张三': 100, '李四': 98, '王五': 45}

for item in scores:
    print(item, scores[item], scores.get(item))

5.字典生成式

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

d = {item.upper(): price for item, price in zip(items, prices) }
print(d)  # {'FRUITS': 96, 'BOOKS': 78, 'OTHERS': 85}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值