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 相关文章推荐
python if not in 多条件判断代码
Sep 21 Python
Python程序员面试题 你必须提前准备!
Jan 16 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
利用anaconda作为python的依赖库管理方法
Aug 13 Python
python循环输出三角形图案的例子
Nov 22 Python
Python装饰器原理与基本用法分析
Jan 07 Python
python实现logistic分类算法代码
Feb 28 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
django 模型字段设置默认值代码
Jul 15 Python
解决pip安装的第三方包在PyCharm无法导入的问题
Oct 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
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
vue实现文件上传功能
2018/08/13 Javascript
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[03:08]Ti4观战指南上
2014/07/07 DOTA
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
python自动翻译实现方法
2016/05/28 Python
python实现获取Ip归属地等信息
2016/08/27 Python
浅谈django的render函数的参数问题
2018/10/16 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
PHP面试题大全
2015/10/16 面试题
市场营销专业毕业生自荐信
2013/11/02 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
教师考察材料范文
2014/06/03 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
2014年学校办公室工作总结
2014/12/19 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
python 多态 协议 鸭子类型详解
2021/11/27 Python
mysql查看表结构的三种方法总结
2022/07/07 MySQL