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 相关文章推荐
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
Apr 28 Python
Python优先队列实现方法示例
Sep 21 Python
python实现二分查找算法
Sep 21 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
Python3实现购物车功能
Apr 18 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
opencv之颜色过滤只留下图片中的红色区域操作
Jun 05 Python
Python生成随机验证码代码实例解析
Jun 09 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
python实现局部图像放大
Nov 17 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 zend 相对路径问题
2009/01/12 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Python使用Django实现博客系统完整版
2020/09/29 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
python中实现字符串翻转的方法
2018/07/11 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
安踏官方商城:anta.cn
2019/12/16 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
人力资源管理专业应届生求职信
2014/04/24 职场文书
大专生求职信
2014/06/29 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
求职推荐信范文
2015/03/27 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书