dict built-in function

本文详细介绍了Python中字典的基本概念及使用方法,包括字典的创建、常用操作及其内部实现原理,适合初学者和需要复习字典用法的开发者。

映射类型:字典

字典是无序的,映射类型对象里哈希值和被指向的对象是一对多的关系,字典中的键必须是可哈希的,所有不可变的类型都是可哈希的,另外针对数字键来说,值相等的两个数字是相同的键,例如1和1.0;说到不可变类型你可能会想到元组,元组作为字典的键是需要注意的地方就是元组中只包括想数字和祖父传这样的不可变参数,才可以作为字典中有效的键

 

创建一个字典有以下几种方法。

1.dict1 = {}

2.dict2 = dict()

3.dict3 = dict((['x',1],['y',2]))

4.dict4 = {}.fromkeys(('x','y'),-1)      # -1为vaules,也可以不填参数,默认为None

    >>>{'y':-1,'x':2}

5.dict5 = dict(zip(('x','y'),(1,2))

6.dict6 = dict([('xy'[i-1],i) for i in range(1,3)])

 

 

国际惯例dir(dict)

['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

 

1.clear 清除字典

2.copy 拷贝,浅拷贝

3.fromkeys 创建并返回一个新字典

dic = dict.fromkeys(('x','y'),1)    # 参数seq为键,val参数若没有指定那就是默认值为None
print(dic)

>>> {'x': 1, 'y': 1}

4.get 对字典中的键key,返回他对应的value,如果不存在,则返回defualt的值,默认是None

dic = {'k1':1,'k2':2}
v = dic.get('k3','sb')
print(v)

>>>sb

5.items 返回一个包含字典中键,值对元祖的列表

 

dic = {'k1':1,'k2':2}
v = dic.items()
print(v)

>>>dict_items([('k2', 2), ('k1', 1)])    # 是一个列表

6.keys 返回一个包含字典中键的列表

dic = {'k1':1,'k2':2}
v = dic.keys()
print(v)

>>>dict_keys(['k1', 'k2'])

7.pop(key[,default]) 如果字典中key键存在,删除并返回dict[key],如果不存在,且没有给出default的值,则报keyerror

dic = {'k1':1,'k2':2}
v = dic.pop('k1','sb')      # default = 'sb'
print(v)

>>> 1

8.popitem 以元祖的形式返回并删除第一个键值对

dic = {'k1':1,'k2':2}
print(dic)
v = dic.popitem()       # 因为字典是无序的,所以每次的执行结果都可能不一样

print(v)

>>>{'k2': 2, 'k1': 1}
       ('k2', 2)

dic = {'k1':1,'k2':2}
print(dic)
v = dic.popitem()
print(v)

>>>{'k1': 1, 'k2': 2}
       ('k1', 1)    

9.setdefault(key,default = None) 如果字典中不存在key键,由dict[key] = default 为它赋值

dic = {'k1':1,'k2':2}
v = dic.setdefault('k3','sb')  
print(v)

>>> sb
print(dic)

>>>{'k1': 1, 'k2': 2, 'k3': 'sb'}

vv = dic.setdefault('k2','sb')
print(vv)

>>> 2
print(dic)

>>>{'k1': 1, 'k2': 2}

  

  

10.update(dict2) 将字典dict2的键值对添加到字典中

dic1 = {'k1':1,'k2':2}
dic2 = {'k3':3} dic2.update(dic1) # tips: 字典中原有的键如果与新添加的键重复,那么重复键对应的原有条目的值将被新键所对应的值所覆盖
print(dic2) >>>{'k2': 2, 'k3': 3, 'k1': 1}

11.values 返回一个包含字典中所有值的列表

dic1 = {'k1':1,'k2':2}
v = dic1.values()   
print(v)

>>>dict_values([2, 1])

  

转载于:https://www.cnblogs.com/learnC/p/5957600.html

一、数据采集层:多源人脸数据获取 该层负责从不同设备 / 渠道采集人脸原始数据,为后续模型训练与识别提供基础样本,核心功能包括: 1. 多设备适配采集 实时摄像头采集: 调用计算机内置摄像头(或外接 USB 摄像头),通过OpenCV的VideoCapture接口实时捕获视频流,支持手动触发 “拍照”(按指定快捷键如Space)或自动定时采集(如每 2 秒采集 1 张),采集时自动框选人脸区域(通过Haar级联分类器初步定位),确保样本聚焦人脸。 支持采集参数配置:可设置采集分辨率(如 640×480、1280×720)、图像格式(JPG/PNG)、单用户采集数量(如默认采集 20 张,确保样本多样性),采集过程中实时显示 “已采集数量 / 目标数量”,避免样本不足。 本地图像 / 视频导入: 支持批量导入本地人脸图像文件(支持 JPG、PNG、BMP 格式),自动过滤非图像文件;导入视频文件(MP4、AVI 格式)时,可按 “固定帧间隔”(如每 10 帧提取 1 张图像)或 “手动选择帧” 提取人脸样本,适用于无实时摄像头场景。 数据集对接: 支持接入公开人脸数据集(如 LFW、ORL),通过预设脚本自动读取数据集目录结构(按 “用户 ID - 样本图像” 分类),快速构建训练样本库,无需手动采集,降低系统开发与测试成本。 2. 采集过程辅助功能 人脸有效性校验:采集时通过OpenCV的Haar级联分类器(或MTCNN轻量级模型)实时检测图像中是否包含人脸,若未检测到人脸(如遮挡、侧脸角度过大),则弹窗提示 “未识别到人脸,请调整姿态”,避免无效样本存入。 样本标签管理:采集时需为每个样本绑定 “用户标签”(如姓名、ID 号),支持手动输入标签或从 Excel 名单批量导入标签(按 “标签 - 采集数量” 对应),采集完成后自动按 “标签 - 序号” 命名文件(如 “张三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值