Python中的字典及其应用

简介:

一.字典创建
1.赋值创建字典
#赋值创建字典,key-value----键值对
In [1]: d = {'key1': 'value', 'key2': 'value2'}
Python中的字典及其应用
In [2]: print d
{'key2': 'value2', 'key1': 'value'}

In [3]: services = {'ssh': 22, 'ftp':[20, 21], 'http':[80, 8080]}
Python中的字典及其应用
In [4]: print services
{'ftp': [20, 21], 'http': [80, 8080], 'ssh': 22}

2.通过工厂函数创建字典
In [6]: users = dict(user1='123',user2='456',user3='789')

In [7]: print users
{'user2': '456', 'user3': '789', 'user1': '123'}
Python中的字典及其应用
3.通过字典的fromkeys方法创建字典,所有元素有一个默认值
#如果没有指定默认值,默认值为None
In [8]: print {}.fromkeys('hello')
{'h': None, 'e': None, 'l': None, 'o': None}
#给每个元素设置默认值为'123'
Python中的字典及其应用
In [9]: print {}.fromkeys(['user1', 'user2', 'user3'], '123')
{'user2': '123', 'user3': '123', 'user1': '123'}
Python中的字典及其应用
应用案例: 生成多个银行卡号,并初始化密码为"000000"
# 卡号由 6 位组成, 前 3 位是 610 , 后面的依次是 001, 002, 003...100
[root@localhost code1]# vim cards.py
Python中的字典及其应用
#!/usr/bin/env python
#coding:utf-8
cards = []
for i in range(1,101):
a = '610%.3d' %(i)
cards.append(a)
print {}.fromkeys(cards,'000000')
Python中的字典及其应用
Python中的字典及其应用
二.分析字典的特征(跟元组和列表比较)
-字典不能索引和切片,因为字典是无序的数据类型;
-字典不支持重复和连接;
-字典支持成员操作符: 判断字典的key值是否在字典中存在; in, not in
三.字典的增删改查
1.增
-字典名[key] = value
-d.update(a=1, b=2)
-d.update({'a':1, 'b',2})
-d.setdefault('a', 1)

(1)通过字典名[key]=value,将key-value添加到字典中
In [10]: service = {'ftp':[20,21]}
In [11]: service['http'] = [80,8080]

In [12]: service
Out[12]: {'ftp': [20, 21], 'http': [80, 8080]}

(2)update方法实现添加:key存在,覆盖value值,否则添加
In [21]: service = {'ftp':[20,21]}

In [22]: service1 = {'ssh':22}
Python中的字典及其应用
In [23]: service.update(service1)

In [24]: print service
{'ftp': [20, 21], 'ssh': 22}
Python中的字典及其应用
(3)update添加
In [25]: print service
{'ftp': [20, 21], 'ssh': 22}

In [27]: service.update(http=[80,8080],ftp=23)
Python中的字典及其应用
In [28]: print service #覆盖value值
{'ftp': 23, 'http': [80, 8080], 'ssh': 22}
Python中的字典及其应用
(4)setdefault实现添加:
key存在,不覆盖value值,否则,添加

In [30]: service = {'ftp':[20,21]}
In [32]: service.setdefault('ftp',23)
Out[32]: [20, 21]

In [33]: print service
{'ftp': [20, 21]} #key存在不覆盖value值
In [34]: service.setdefault('ssh',23)
Out[34]: 23

In [35]: print service
{'ftp': [20, 21], 'ssh': 23} #key不存在,添加

2.改
-字典名[key]=value
-d.update({'a':2, 'b':3})
-d.update(a=2, b=3)
3.查
-查看key值;
-查看value值;
-查看key-value键值对;
-查看key是否存在;

(1)查看key值
In [38]: services
Out[38]: {'cc': 23, 'ftp': [20, 21], 'http': [80, 8080], 'ssh': 22}
Python中的字典及其应用

In [40]: services.keys()
Out[40]: ['cc', 'ftp', 'http', 'ssh']
Python中的字典及其应用
In [41]: services.viewkeys()
Out[41]: dict_keys(['cc', 'ftp', 'http', 'ssh']) #给key起名字
Python中的字典及其应用
In [45]: services.iterkeys()
Out[45]: <dictionary-keyiterator at 0x2887730>

(2)查看value值
n [46]: services.values()
Out[46]: [23, [20, 21], [80, 8080], 22]
Python中的字典及其应用
(3)查看key-value键值对
In [47]: services.items()
Out[47]: [('cc', 23), ('ftp', [20, 21]), ('http', [80, 8080]), ('ssh', 22)]
Python中的字典及其应用
(4)查看key是否存在
In [48]: services.has_key('http')
Out[48]: True

In [49]: services.has_key('sttp')
Out[49]: False
Python中的字典及其应用
(5)查看指定key对应的value值
如果key不存在,不报错;
如果key存在,返回value值
In [50]: services.get('sttp') #key不存在,不报错

In [51]: services.get('http')
Out[51]: [80, 8080] #key存在,返回value值
Python中的字典及其应用
In [52]: services['sttp'] #key不存在,直接报错
KeyError Traceback (most recent call 
In [54]: services['http'] #key存在,返回value值
Out[54]: [80, 8080]

4.删

d.pop(key) #删除指定 key 的字典元素;
d.popitem() #随机删除字典的 key-value 元素 ;
del d[key] #删除指定 key 的字典元素;
d.clear() #清空字典元素

四.循环遍历字典
In [82]: service
Out[82]: {'ftp': 20, 'http': [80, 8080], 'ssh': 22}
1.遍历key-value的值
In [85]: for i,j in service.items():
....: print i,j
....: 
ftp 20
http [80, 8080]
ssh 22
Python中的字典及其应用
2.默认情况下,遍历字典的key值
In [86]: for i in service:
....: print i
....: 
ftp
http
ssh
Python中的字典及其应用
五.字典的应用
应用1: 通过字典实现case语句
-目前python不支持case语句;
-实现case语句的两种方式:
-if...elif...elif...else...
-字典实现

#!/usr/bin/env python
#coding:utf-8
"""
# 实现四则运算
# - 用户分别输入第一个数字,运算操作符,第三个数字;
# - 根据用户的运算操作打印出运算结果;
# """
if...elif...elif...else... 实现:

from __future__ import division
num1 = input()
ope = raw_input()
num2 = input()
if ope == '+':
        print num1+num2
elif ope == '-':
        print num1-num2
elif ope == '*':
        print num1*num2
elif ope == '/':
        print num1/num2
else:
        print 'error operator'

字典实现 case 语句
#coding:utf-8
"""
实现四则运算
用户分别输入第一个数字,运算操作符,第三个数字;
根据用户的运算操作打印出运算结果;
"""

#!/usr/bin/env python
#coding:utf-8
from future import division
num1 = input()
ope = raw_input()
num2 = input()
d = {
"+" : num1+num2,
"-" : num1-num2,
"" : num1num2,
"/" : num1/num2,
}
if not ope in d:
print "error operator"
else:
print d[ope]

应用2:用户管理系统
-1.注册新用户
-如果注册用户已经存在,则报错;
-需要填写信息: name, passwd, gender, email,age;
-2.用户登录 要求同之前写的用户登录系统
-3.注销用户 用户注销时,需要输入用户名和正确的用户密码
-4.显示用户信息 显示系统中存在所有已经注册用户的信息;
-5.退出系统。

欢迎评论












本文转自Uniqueh51CTO博客,原文链接:http://blog.51cto.com/13363488/2057046 ,如需转载请自行联系原作者


相关文章
|
7天前
|
Python
python增量赋值运算的应用
Python中的增量赋值运算符用于便捷地执行算术操作,如`+=`, `-=`等,它们分别代表加法、减法、乘法、除法、取模、整除和幂运算。
11 1
|
12天前
|
Python
Python文件操作学习应用案例详解
【4月更文挑战第7天】Python文件操作包括打开、读取、写入和关闭文件。使用`open()`函数以指定模式(如'r'、'w'、'a'或'r+')打开文件,然后用`read()`读取全部内容,`readline()`逐行读取,`write()`写入字符串。最后,别忘了用`close()`关闭文件,确保资源释放。
17 1
|
17天前
|
存储 开发者 Python
Python中的collections模块与UserDict:用户自定义字典详解
【4月更文挑战第2天】在Python中,`collections.UserDict`是用于创建自定义字典行为的基类,它提供了一个可扩展的接口。通过继承`UserDict`,可以轻松添加或修改字典功能,如在`__init__`和`__setitem__`等方法中插入自定义逻辑。使用`UserDict`有助于保持代码可读性和可维护性,而不是直接继承内置的`dict`。例如,可以创建一个`LoggingDict`类,在设置键值对时记录操作。这样,开发者可以根据具体需求定制字典行为,同时保持对字典内部管理的抽象。
|
19天前
|
存储 缓存 算法
Python中collections模块的deque双端队列:深入解析与应用
在Python的`collections`模块中,`deque`(双端队列)是一个线程安全、快速添加和删除元素的双端队列数据类型。它支持从队列的两端添加和弹出元素,提供了比列表更高的效率,特别是在处理大型数据集时。本文将详细解析`deque`的原理、使用方法以及它在各种场景中的应用。
|
7天前
|
机器学习/深度学习 人工智能 算法
图像处理与分析:Python中的计算机视觉应用
【4月更文挑战第12天】Python在计算机视觉领域广泛应用,得益于其丰富的库(如OpenCV、Pillow、Scikit-image)和跨平台特性。图像处理基本流程包括获取、预处理、特征提取、分类识别及重建生成。示例代码展示了面部和物体检测,以及使用GAN进行图像生成。
|
2天前
|
机器学习/深度学习 数据采集 供应链
从数据到决策:scikit-learn在业务分析中的应用
【4月更文挑战第17天】本文探讨了scikit-learn在业务分析中的应用,包括数据预处理、分类、回归和聚类模型的构建,以及模型评估与优化。通过使用scikit-learn,企业能有效处理数据、预测趋势、客户细分并制定决策,从而提升经营效率和市场策略。随着机器学习的发展,scikit-learn在业务分析领域的潜力将持续释放,创造更多价值。
|
3天前
|
API 调度 开发者
深入理解Python异步编程:从Asyncio到实战应用
在现代软件开发中,异步编程技术已成为提升应用性能和响应速度的关键策略。本文将通过实例讲解Python中的异步编程核心库Asyncio的基本概念、关键功能以及其在Web开发中的应用。我们不仅将理论与实践结合,还将展示如何通过实际代码示例解决常见的并发问题,帮助开发者更有效地利用Python进行异步编程。
|
4天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
6天前
|
SQL API 数据库
Python中的SQLAlchemy框架:深度解析与实战应用
【4月更文挑战第13天】在Python的众多ORM(对象关系映射)框架中,SQLAlchemy以其功能强大、灵活性和易扩展性脱颖而出,成为许多开发者首选的数据库操作工具。本文将深入探讨SQLAlchemy的核心概念、功能特点以及实战应用,帮助读者更好地理解和使用这一框架。
|
8天前
|
安全 Python
python字典的内置方法
Python字典主要方法包括:`keys()`(返回所有键)、`values()`(返回所有值)、`items()`(返回所有键值对)、`get()`(安全取值,键不存在时返回默认值)、`setdefault()`(设置默认值)、`update()`(合并字典)、`pop()`(删除并返回值)、`clear()`(清空字典)、`copy()`(浅拷贝)、`fromkeys()`(新建字典并设置默认值)、`popitem()`(随机删除键值对)。
8 0