专栏首页python3Python中的字典及其应用

Python中的字典及其应用

一.字典创建 1.赋值创建字典 #赋值创建字典,key-value----键值对 In [1]: d = {'key1': 'value', 'key2': 'value2'}

In [2]: print d {'key2': 'value2', 'key1': 'value'}

In [3]: services = {'ssh': 22, 'ftp':[20, 21], 'http':[80, 8080]}

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'}

3.通过字典的fromkeys方法创建字典,所有元素有一个默认值 #如果没有指定默认值,默认值为None In [8]: print {}.fromkeys('hello') {'h': None, 'e': None, 'l': None, 'o': None} #给每个元素设置默认值为'123'

In [9]: print {}.fromkeys(['user1', 'user2', 'user3'], '123') {'user2': '123', 'user3': '123', 'user1': '123'}

应用案例: 生成多个银行卡号,并初始化密码为"000000" # 卡号由 6 位组成, 前 3 位是 610 , 后面的依次是 001, 002, 003...100 [root@localhost code1]# vim cards.py

#!/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')

二.分析字典的特征(跟元组和列表比较) -字典不能索引和切片,因为字典是无序的数据类型; -字典不支持重复和连接; -字典支持成员操作符: 判断字典的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}

In [23]: service.update(service1)

In [24]: print service {'ftp': [20, 21], 'ssh': 22}

(3)update添加 In [25]: print service {'ftp': [20, 21], 'ssh': 22}

In [27]: service.update(http=[80,8080],ftp=23)

In [28]: print service #覆盖value值 {'ftp': 23, 'http': [80, 8080], 'ssh': 22}

(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}

In [40]: services.keys() Out[40]: ['cc', 'ftp', 'http', 'ssh']

In [41]: services.viewkeys() Out[41]: dict_keys(['cc', 'ftp', 'http', 'ssh']) #给key起名字

In [45]: services.iterkeys() Out[45]: <dictionary-keyiterator at 0x2887730>

(2)查看value值 n [46]: services.values() Out[46]: [23, [20, 21], [80, 8080], 22]

(3)查看key-value键值对 In [47]: services.items() Out[47]: [('cc', 23), ('ftp', [20, 21]), ('http', [80, 8080]), ('ssh', 22)]

(4)查看key是否存在 In [48]: services.has_key('http') Out[48]: True

In [49]: services.has_key('sttp') Out[49]: False

(5)查看指定key对应的value值 如果key不存在,不报错; 如果key存在,返回value值 In [50]: services.get('sttp') #key不存在,不报错

In [51]: services.get('http') Out[51]: [80, 8080] #key存在,返回value值

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

2.默认情况下,遍历字典的key值 In [86]: for i in service: ....: print i ....: ftp http ssh

五.字典的应用 应用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.退出系统。

欢迎评论

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Python基础】06、Python函数

    函数是python为了代码最大程度地重用和最小化代码冗余而提供的基础程序结构。

    py3study
  • Python心得--如何提高代码质量

      前些日子用python基于prometheus开发了一个vsphere volume卷监控的exporter,于是跟vsphere的api(pyvmomi)...

    py3study
  • python技巧 合并两个字典

    py3study
  • 【Python基础】06、Python函数

    函数是python为了代码最大程度地重用和最小化代码冗余而提供的基础程序结构。

    py3study
  • 分分钟探索HashMap的原理

    Hello大家好,我是兔君哦,好久没和大家见面了,我就在可视化系列中乱入一下吧!今天给大家带来的是HashMap的原理,希望对大家有帮助~

    萌兔IT
  • python的数据类型简介

    ipython:原生python不具有命令行补全等功能,这个工具提供了类似shell的功能,方便学习使用 安装: wget https://repo.cont...

    py3study
  • 合并两个排序的链表

    题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如下图中的链表1和链表2,则合并之后的升序链表如链表3所示。 ...

    猿人谷
  • 数据结构:链表

    链表(Linked List)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。

    灰子学技术
  • 【JDK1.8】JDK1.8集合源码阅读——总章

      今天开始阅读jdk1.8的集合部分,平时在写项目的时候,用到的最多的部分可能就是Java的集合框架,通过阅读集合框架源码,了解其内部的数据结构实现,能够深入...

    joemsu
  • 人脸识别出现很大问题

    {"ImageWidth":540,"ImageHeight":960,"FaceInfos":[{"X":109,"Y":289,"Width":335,"H...

    用户4129548

扫码关注云+社区

领取腾讯云代金券