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实现3行代码解简单的一元一次方程
Aug 18 Python
使用Python编写vim插件的简单示例
Apr 17 Python
python、java等哪一门编程语言适合人工智能?
Nov 13 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
python+selenium实现简历自动刷新的示例代码
May 20 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
在Python 的线程中运行协程的方法
Feb 24 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
Apr 13 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
python 可视化库PyG2Plot的使用
Jan 21 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
CURL状态码列表(详细)
2013/06/27 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
Yii实现简单分页的方法
2016/04/29 PHP
php图片添加水印例子
2016/07/20 PHP
JS日历 推荐
2006/12/03 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
基于JS判断对象是否是数组
2020/01/10 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
Python中的lstrip()方法使用简介
2015/05/19 Python
代码详解django中数据库设置
2019/01/28 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
python实现指定ip端口扫描方式
2019/12/17 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
打造经典复古风格的品牌:Alice + Olivia(爱丽丝+奥利维亚)
2016/09/07 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
Exception类的常用方法
2012/06/16 面试题
元旦红领巾广播稿
2014/02/19 职场文书
房屋转让协议书
2014/04/11 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
学校政风行风整改方案
2014/10/25 职场文书
立项申请报告范本
2015/05/15 职场文书
mysql查看表结构的三种方法总结
2022/07/07 MySQL