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 相关文章推荐
Python 调用VC++的动态链接库(DLL)
Sep 06 Python
Python3写入文件常用方法实例分析
May 22 Python
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
python web自制框架之接受url传递过来的参数实例
Dec 17 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
Python sorted对list和dict排序
Jun 09 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
python为什么会环境变量设置不成功
Jun 23 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
一些关于python 装饰器的个人理解
Aug 31 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 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处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
原生JS实现留言板
2020/03/26 Javascript
Python MD5文件生成码
2009/01/12 Python
python的迭代器与生成器实例详解
2014/07/16 Python
Python压缩和解压缩zip文件
2015/02/14 Python
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
大专生简历的自我评价
2013/11/26 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
还款承诺书范本
2015/01/20 职场文书
鸟的天堂导游词
2015/01/31 职场文书
在校学生证明格式
2015/06/24 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript