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 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
Python实现的多线程端口扫描工具分享
Jan 21 Python
python显示生日是星期几的方法
May 27 Python
python实现用户登陆邮件通知的方法
Jul 09 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
python线程池threadpool实现篇
Apr 27 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
python标记语句块使用方法总结
Aug 05 Python
keras实现多种分类网络的方式
Jun 11 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 Python
python安装sklearn模块的方法详解
Nov 28 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/11/26 PHP
PHP实时显示输出
2008/10/02 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
Python3进制之间的转换代码实例
2019/08/24 Python
树莓派升级python的具体步骤
2020/07/05 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
大学生创业策划书
2014/02/02 职场文书
妇联主席先进事迹
2014/05/18 职场文书
农业项目建议书
2014/08/25 职场文书
无保留意见审计报告
2015/06/05 职场文书