Python学习基础笔记八——字典
字典:
1)字典中的元素是通过键来存储的,而不是通过偏移来存取的。字典是唯一内置的映射类型(键映射到值的对象)
2)是无序集合;
3)字典是作为散列表(支持快速检索的数据结构)来实现的。Python采用最优化的散列算法来寻找键,因此搜索是很快速的。
key对应的是不可变数据类型,和哈希数据类型,如bool、int、str、元组;
value对应的则是任意数据类型。
常见字典常量和操作:
例1:打印键和值,不使用元组的方式:
people = [name: Alex, age: 18, height: 175]
for k, v in people.items():
print(k, v)
例2:字典的增删改查的方法:
增:
D[key]=value 删除、修改键;
D.setdefault(weight, 100) 有键值就不做任何改变;
删:
D.pop(age) 删除age键,有返回值;
D.pop(age1, No keys) 设置错误提示信息
D.popitem() 随机删除
D.clear() 清空字典
del D[name] 删除元素,尽量使用pop,如果没有键,则会报错。
改:
D.update 合并(没有就加进来,有就覆盖)
查:
D.keys()
D.values()
D.items()
D.get(keys, default): 第二个参数是错误信息提示;
例3:将列表元素进行分类:
L = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
D = {}
L_greater_66 = []
L_less_66 = []
for i in L:
if i == 66:
continue
elif i > 66:
L_greater_66.append(i)
else:
L_less_66.append(i)
D[k1] = L_greater_66
D[k2] = L_less_66
print(D)
2022年12月7日:
增加一道字典的题目,会用到lambda函数。
portfolio = [
{name: IBM, shares: 100, price: 91.1},
{name: AAPL, shares: 50, price: 543.22},
{name: FB, shares: 200, price: 21.09},
{name: HPQ, shares: 35, price: 31.75},
{name: YHOO, shares: 45, price: 16.35},
{name: ACME, shares: 75, price: 115.65}
]
# 计算购买每支股票的总价
ret = map(lambda dic: {dic[name]: round(dic[shares] * dic[price], 2)}, portfolio)
print(list(ret))
# 用filter过滤出,单价大于100的股票有哪些
ret = filter(lambda dic: True if dic[price] > 100 else False, portfolio)
print(list(ret))
ret = filter(lambda dic: dic[price] > 100, portfolio)
print(list(ret))
