Python中字典创建、遍历、添加等实用操作技巧合集


Posted in Python onJune 02, 2015

字段是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 相关文章推荐
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
python中pass语句用法实例分析
Apr 30 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
Django 跨域请求处理的示例代码
May 02 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
May 24 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
Django上线部署之IIS的配置方法
Aug 22 Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 Python
详解Python常用的魔法方法
Jun 03 Python
python实现的文件同步服务器实例
Jun 02 #Python
Python中for循环控制语句用法实例
Jun 02 #Python
python获取目录下所有文件的方法
Jun 01 #Python
Python常用小技巧总结
Jun 01 #Python
Python获取运行目录与当前脚本目录的方法
Jun 01 #Python
Python运算符重载用法实例分析
Jun 01 #Python
python使用Image处理图片常用技巧分析
Jun 01 #Python
You might like
一个简单的PHP入门源程序
2006/10/09 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
python去掉字符串中重复字符的方法
2014/02/27 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
pandas的相关系数与协方差实例
2019/12/27 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
介绍一下linux的文件权限
2012/02/15 面试题
学术会议邀请函范文
2014/01/22 职场文书
商场消防演习方案
2014/02/12 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
2014年物流工作总结
2014/11/25 职场文书
胡桃夹子观后感
2015/06/11 职场文书