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使用迭代器捕获Generator返回值的方法
Apr 05 Python
Python实现Kmeans聚类算法
Jun 10 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
Python时间和字符串转换操作实例分析
Mar 16 Python
python图像处理入门(一)
Apr 04 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
Python3 中作为一等对象的函数解析
Dec 11 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
python网络编程socket实现服务端、客户端操作详解
Mar 24 Python
Python自省及反射原理实例详解
Jul 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字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
python脚本监控docker容器
2016/04/27 Python
python3处理含有中文的url方法
2018/05/10 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
Flask-WTF表单的使用方法
2019/07/12 Python
django settings.py 配置文件及介绍
2019/07/15 Python
python实现大文本文件分割
2019/07/22 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
一套英文Java笔试题面试题
2016/04/21 面试题
测试工程师程序员求职信范文
2014/02/20 职场文书
公司请假条格式
2014/04/11 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
青春奉献演讲稿
2014/05/08 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
2015新年寄语大全
2014/12/08 职场文书
质量保证书
2015/01/17 职场文书
活动费用申请报告
2015/05/15 职场文书
辩论会主持词
2015/07/03 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers