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自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
python2.7使用plotly绘制本地散点图和折线图
Apr 02 Python
python lxml中etree的简单应用
May 10 Python
通过python实现随机交换礼物程序详解
Jul 10 Python
Python实现最常见加密方式详解
Jul 13 Python
Python中*args和**kwargs的区别详解
Sep 17 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
Dec 12 Python
详解Python中pyautogui库的最全使用方法
Apr 01 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 Python
python利用线程实现多任务
Sep 18 Python
pytorch实现ResNet结构的实例代码
May 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 方便水印和缩略图的图形类
2009/05/21 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
家具厂厂长岗位职责
2014/01/01 职场文书
服务标兵事迹材料
2014/05/04 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
组工干部对照检查材料
2014/08/25 职场文书
事业单位考察材料范文
2014/12/25 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
python Tkinter模块使用方法详解
2022/04/07 Python
Oracle使用别名的好处
2022/04/19 Oracle