python基础知识——内置数据结构(字典)

python基础知识——内置数据结构(字典)

字典是有“键-值”对组成的集合,字典中的“值”通过“键”来引用。“键-值”对之间用逗号隔开,并且被包含在一对花括号中。

1、字典的创建

格式

dictionary_name = {key1 : value1, key2 : value2, ...}


创建空的字典

dictionary_name = {}


例如

dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict


输出: {'s': 'shanghai', 'b': 'beijing', 'g': 'guangzhou', 'w': 'wuhan'}

注意:字典将会按照每个元素的Hashcode值进行排序,而且,字典的“键”是区分大小写的。

2、字典的访问

字典与元组或者列表不同,不是通过索引访问的,而是通过“键”值访问value值的。

格式

value = dictionary_name[key]


例如

#coding:UTF-8
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict

#访问'shanghai'
print dict['s']


3、字典元素的添加和修改

在字典中,只需一条赋值语句就实现了字典元素的添加和修改,所不同的是,若增加的元素在字典中不存在就是添加,若已经存在就是修改。

例如

#coding:UTF-8
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict

#添加{'c' : 'chongqing'}
dict['c'] = 'chongqing'
print dict

#修改'wuhan'为'wuchang'
dict['w'] = 'wuchang'
print dict


4、字典中的常用方法

www.zeeklog.com  - python基础知识——内置数据结构(字典)


  1. items方法主要用于实现字典的遍历操作,返回的是由若干元组组成的列表。
#coding:UTF-8
#items()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

print dict.items()

输出[('s', 'shanghai'), ('b', 'beijing'), ('g', 'guangzhou'), ('w', 'wuhan')]

#coding:UTF-8
#使用items()方法遍历字典
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

for (k, v) in dict.items():
    print 'dict[%s] = ' % k ,v 

输出dict[s] =  shanghai
dict[b] =  beijing
dict[g] =  guangzhou
dict[w] =  wuhan

  1. iteritems方法主要是生成遍历器,用于实现字典的遍历,除此之外还有iterkeys()方法和itervalues()方法。
#coding:UTF-8
#使用iteritems()方法遍历字典
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

print dict.iteritems()#构造遍历器

for k, v in dict.iteritems():
    print 'dict[%s] = ' % k , v


  1. setdefault方法用于创建新的元素并设置默认值。
#coding:UTF-8
#设置默认值
dict = {}#空的字典

dict.setdefault('b')#{'b': None}
print dict

dict['b'] = 'beijing'
#已经设置了'b'对应的值,再设置默认将无效
dict.setdefault('b', 'default')
print dict


  1. pop方法用于删除指定的key处的值。
#coding:UTF-8
#删除操作
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

#删除key值为's'处的值
dict.pop('s')

print dict
#coding:UTF-8
#删除操作还有使用内建的方法del()
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

#使用del方法
del(dict['s'])

print dict


#coding:UTF-8
#字典的清空使用clear()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

#清空
dict.clear()

print dict#空的字典



  1. get方法用于得到key键处的值。
#coding:UTF-8
#get()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

print dict.get('s')#shanghai


  1. keys方法用于返回字典中的key的列表。
#coding:UTF-8
#keys()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

print dict.keys()#['s', 'b', 'g', 'w']


  1. values方法用于返回字典中的value的列表。
#coding:UTF-8
#values()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

print dict.values()#['shanghai', 'beijing', 'guangzhou', 'wuhan']


  1. update函数主要实现的是将一个字典中的元素增加到另一个字典中。
#coding:UTF-8
#update()方法
dict_1 = {'b' : 'beijing', 's' : 'shanghai'}

dict_2 = {'w' : 'wuhan', 'g' : 'guangzhou'}

dict_1.update(dict_2)
print dict_1

注意,若出现dict_2中有dict_1中的键,则会更新。

  1. sorted排序函数。
#coding:UTF-8
#sorted()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

#按照key排序
print sorted(dict.items(), key = lambda d: d[0])

#按照value排序
print sorted(dict.items(), key = lambda d: d[1])


  1. copy函数实现的是字典的浅拷贝。
#coding:UTF-8
#copy()方法
dict_1 = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}

dict_2 = {'c' : 'chongqing'}

dict_2 = dict_1.copy()
print dict_2#{'s': 'shanghai', 'b': 'beijing', 'w': 'wuhan', 'g': 'guangzhou'}

注意:清除了dict_2中原有的元素。浅拷贝是指只拷贝数据不拷贝数据之间的关系,新的数据和旧的数据使用的是同一块内存空间;对应的是深拷贝,既拷贝数据,也拷贝数据之间的关系,新的数据和旧的数据使用的是不同的内存空间。在python中可以使用copy模块来实现对象的深拷贝和浅拷贝,其中的deepcopy()用于深拷贝操作,copy()用于浅拷贝操作。

#coding:UTF-8
#copy模块
import copy

dict_1 = {'a' : 'beijing', 'b' : {'s' : 'shanghai', 'w' : 'wuhan'}}

dict_2 = copy.deepcopy(dict_1)#深拷贝
dict_3 = copy.copy(dict_1)#浅拷贝

dict_2['b']['s'] = 'shenyang'
print dict_1#{'a': 'beijing', 'b': {'s': 'shanghai', 'w': 'wuhan'}}
dict_3['b']['s'] = 'shenyang'
print dict_1#{'a': 'beijing', 'b': {'s': 'shenyang', 'w': 'wuhan'}}

Read more

决策树算法介绍:原理与案例实现

决策树算法介绍:原理与案例实现

决策树算法介绍:原理与案例实现 决策树算法介绍:原理与案例实现 一、决策树算法概述 决策树是一种基本的分类与回归方法,它基于树形结构进行决策。决策树的每一个节点都表示一个对象属性的测试,每个分支代表该属性测试的一个输出,每个叶节点则代表一个类别或值。决策树学习通常包括三个步骤:特征选择、决策树的生成和决策树的剪枝。 二、决策树算法原理 1. 特征选择 特征选择是决策树学习的核心。它决定了在树的每个节点上选择哪个属性进行测试。常用的特征选择准则有信息增益、增益比和基尼不纯度。 * 信息增益:表示划分数据集前后信息的不确定性减少的程度。选择信息增益最大的属性作为当前节点的测试属性。 * 增益比:在信息增益的基础上考虑了属性的取值数量,避免了对取值数量较多的属性的偏好。 * 基尼不纯度:在CART(分类与回归树)算法中,使用基尼不纯度作为特征选择的准则。基尼不纯度越小,表示纯度越高。 2. 决策树的生成 根据选择的特征选择准则,从根节点开始,递归地为每个节点选择最优的划分属性,并根据该属性的不同取值建立子节点。直到满足停止条件(如所有样本属于同一类,

By Ne0inhk
他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元

他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元

手机拍照不够爽,带个单反又太重? 试试做个树莓派复古相机,还能自己编写处理算法的那种—— 成本不到700元。 没错,颜值很高,拍出来的照片也能打: 你也可以快速上手做一个。 如何制作一个树莓派复古相机 目前,这部相机的代码、硬件清单、STL文件(用于3D打印)和电路图都已经开源。 首先是硬件部分。 这部复古相机的硬件清单如下: 树莓派Zero W(搭配microSD卡)、树莓派高清镜头模组、16mm 1000万像素长焦镜头、2.2英寸TFT显示屏、TP4056微型USB电池充电器、MT3608、2000mAh锂电池、电源开关、快门键、杜邦线、3D打印相机外壳、黑色皮革贴片(选用) 至于3D打印的相机外壳,作者已经开源了所需的STL文件,可以直接上手打印。 材料齐全后,就可以迅速上手制作了~ 内部的电路图,是这个样子的: 具体引脚如下: 搭建好后,整体电路长这样: 再加上3D外壳(喷了银色的漆)和镜头,一部简易的树莓派复古相机就做好了。 至于软件部分,

By Ne0inhk
🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

是一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器。 集成了 SearXNG AI 搜索、开发工具集合、 市面上最流行的 AI 工具门户,以及代码编写和桌面快捷工具等功能, 通过模块化的 Monorepo 架构,提供轻量级、可扩展且高效的桌面体验, 助力 AI 驱动的日常工作流程。

By Ne0inhk