Python学习基础笔记八——字典

字典:

1)字典中的元素是通过键来存储的,而不是通过偏移来存取的。字典是唯一内置的映射类型(键映射到值的对象)

2)是无序集合;

3)字典是作为散列表(支持快速检索的数据结构)来实现的。Python采用最优化的散列算法来寻找键,因此搜索是很快速的。

key对应的是不可变数据类型,和哈希数据类型,如bool、int、str、元组;

value对应的则是任意数据类型。

常见字典常量和操作:

操作 功能 D = {} 空字典 D = {spam: 2, eggs: 3} 两项目字典 D = {food: {ham: 1, egg: 2}} 嵌套 D = dict.fromkeys([a, b]) 其他构造技术 D = dict(zip(keyslist, valslist)) D = dict(name = Bob, age=42) D [eggs] 以键进行索引运算 D[food][ham] 以键进行索引运算 ‘eggs’ in D 成员运算 键存在测试 D.keys() 方法,获取键 D.values() 方法获取值 D.items() 获取键+值 D.copy() 副本 D.get(key, default) 默认 D.update(D2) 合并 D.pop(key) 删除 len(D) 长度 D[key]=value 新增、修改键、删除键 del D[key] 根据键删除条目 list(D.keys()) 字典视图 D1.keys() & D2.keys() Dictionary views D = {x: x*2 for x in range(10)} 字典解析

例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))
经验分享 程序员 微信小程序 职场和发展