Python字典创建 遍历 添加等实用基础操作技巧


Posted in Python onSeptember 13, 2018

字段是Python是字典中唯一的键-值类型,是Python中非常重要的数据结构,因其用哈希的方式存储数据,其复杂度为O(1),速度非常快。下面列出字典的常用的用途.

一、字典中常见方法列表

代码如下:

D.clear() #移除D中的所有项

D.copy() #返回D的副本

D.fromkeys(seq[,val]) #返回从seq中获得的键和被设置为val的值的字典。可做类方法调用

D.get(key[,default]) #如果D[key]存在,将其返回;否则返回给定的默认值None

D.has_key(key) #检查D是否有给定键key

D.items() #返回表示D项的(键,值)对列表

D.iteritems() #从D.items()返回的(键,值)对中返回一个可迭代的对象

D.iterkeys() #从D的键中返回一个可迭代对象

D.itervalues() #从D的值中返回一个可迭代对象

D.keys() #返回D键的列表

D.pop(key[,d]) #移除并且返回对应给定键key或给定的默认值D的值

D.popitem() #从D中移除任意一项,并将其作为(键,值)对返回

D.setdefault(key[,default]) #如果D[key]存在则将其返回;否则返回默认值None

D.update(other) #将other中的每一项加入到D中。

D.values()#返回D中值的列表

二、创建字典的五种方法

方法一: 常规方法

代码如下:

# 如果事先能拼出整个字典,则此方法比较方便

>>> D1 = {'name':'Bob','age':40}

方法二: 动态创建

代码如下:

# 如果需要动态地建立字典的一个字段,则此方法比较方便

>>> D2 = {}

>>> D2['name'] = 'Bob'

>>> D2['age'] = 40

>>> D2

{'age': 40, 'name': 'Bob'}

方法三: dict--关键字形式

代码如下:

# 代码比较少,但键必须为字符串型。常用于函数赋值

>>> D3 = dict(name='Bob',age=45)

>>> D3

{'age': 45, 'name': 'Bob'}

方法四: dict--键值序列

代码如下:

# 如果需要将键值逐步建成序列,则此方式比较有用,常与zip函数一起使用

>>> D4 = dict([('name','Bob'),('age',40)])

>>> D4

{'age': 40, 'name': 'Bob'}

代码如下:

>>> D = dict(zip(('name','bob'),('age',40)))

>>> D

{'bob': 40, 'name': 'age'}

方法五: dict--fromkeys方法# 如果键的值都相同的话,用这种方式比较好,并可以用fromkeys来初始化

代码如下:

>>> D5 = dict.fromkeys(['A','B'],0)

>>> D5

{'A': 0, 'B': 0}

如果键的值没提供的话,默认为None

代码如下:

>>> D3 = dict.fromkeys(['A','B'])

>>> D3

{'A': None, 'B': None}

三、字典中键值遍历方法

代码如下:

>>> D = {'x':1, 'y':2, 'z':3} # 方法一
>>> for key in D:
print key, '=>', D[key]
y => 2
x => 1
z => 3
>>> for key, value in D.items(): # 方法二
print key, '=>', value
y => 2
x => 1
z => 3
>>> for key in D.iterkeys(): # 方法三
print key, '=>', D[key]
y => 2
x => 1
z => 3
>>> for value in D.values(): # 方法四
print value
2
1
3
>>> for key, value in D.iteritems(): # 方法五
print key, '=>', value
y => 2
x => 1
z => 3

Note:用D.iteritems(), D.iterkeys()的方法要比没有iter的快的多。

四、字典的常用用途之一代替switch

在C/C++/Java语言中,有个很方便的函数switch,比如:

代码如下:

public class test {
public static void main(String[] args) {
String s = "C";
switch (s){
case "A":
System.out.println("A");
break;
case "B":
System.out.println("B");
break;
case "C":
System.out.println("C");
break;
default:
System.out.println("D");
}
}
}

在Python中要实现同样的功能,

方法一,就是用if, else语句来实现,比如:

代码如下:

from __future__ import division
def add(x, y):
return x + y
def sub(x, y):
return x - y
def mul(x, y):
return x * y
def div(x, y):
return x / y
def operator(x, y, sep='+'):
if sep == '+': print add(x, y)
elif sep == '-': print sub(x, y)
elif sep == '*': print mul(x, y)
elif sep == '/': print div(x, y)
else: print 'Something Wrong'
print __name__
if __name__ == '__main__':
x = int(raw_input("Enter the 1st number: "))
y = int(raw_input("Enter the 2nd number: "))
s = raw_input("Enter operation here(+ - * /): ")
operator(x, y, s)

方法二,用字典来巧妙实现同样的switch的功能,比如:

代码如下:

#coding=gbk
from __future__ import division
x = int(raw_input("Enter the 1st number: "))
y = int(raw_input("Enter the 2nd number: "))
def operator(o):
dict_oper = {
'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y}
return dict_oper.get(o)(x, y)
if __name__ == '__main__':
o = raw_input("Enter operation here(+ - * /): ")
print operator(o)

本文所讲解的内容非常重要,一定要熟练掌握。在日常Python开发工作中会经常用到

Python 相关文章推荐
python实现的简单抽奖系统实例
May 22 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
May 25 Python
Python 递归函数详解及实例
Dec 27 Python
Python操作SQLite数据库的方法详解
Jun 16 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
Mar 24 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
Python如何实现FTP功能
May 28 Python
Python实现加密接口测试方法步骤详解
Jun 05 Python
Python docutils文档编译过程方法解析
Jun 23 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 Python
python单例模式获取IP代理的方法详解
Sep 13 #Python
如何利用python制作时间戳转换工具详解
Sep 12 #Python
Python get获取页面cookie代码实例
Sep 12 #Python
python读取和保存图片5种方法对比
Sep 12 #Python
python3 拼接字符串的7种方法
Sep 12 #Python
python简单操作excle的方法
Sep 12 #Python
使用python实现快速搭建简易的FTP服务器
Sep 12 #Python
You might like
PHP控制网页过期时间的代码
2008/09/28 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
babel基本使用详解
2017/02/17 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
python简单的函数定义和用法实例
2015/05/07 Python
Python实现的购物车功能示例
2018/02/11 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
python3.5安装python3-tk详解
2019/04/26 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
特种设备安全管理制度
2015/08/06 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
Python访问Redis的详细操作
2021/06/26 Python
mysql自增长id用完了该怎么办
2022/02/12 MySQL