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 相关文章推荐
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
Apr 09 Python
python实现的防DDoS脚本
Feb 08 Python
python控制台英汉汉英电子词典
Apr 23 Python
Python素数检测实例分析
Jun 15 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
Python3中的json模块使用详解
May 05 Python
django请求返回不同的类型图片json,xml,html的实例
May 22 Python
Selenium定位元素操作示例
Aug 10 Python
python openCV获取人脸部分并存储功能
Aug 28 Python
Python logging模块写入中文出现乱码
May 21 Python
Python 列表中的修改、添加和删除元素的实现
Jun 11 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 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中用memcached实现页面防刷新功能
2014/08/19 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
Js四则运算函数代码
2012/07/21 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
JS分页的实现(同步与异步)
2017/09/16 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
实现高性能javascript的注意事项
2019/05/27 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
[01:15:16]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第一场 1月26日
2021/03/11 DOTA
python利用有道翻译实现"语言翻译器"的功能实例
2017/11/14 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
python logging设置level失败的解决方法
2020/02/19 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
智乐游戏测试笔试题
2014/05/21 面试题
《红军不怕远征难》教学反思
2014/04/14 职场文书
市场营销工作计划书
2014/05/06 职场文书
大学生团员个人总结
2015/02/14 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python