一.字典的定义:

前面我们说过列表,它适合于将值组织到一个结构中并且通过编号对其进行引用。字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,字典中的值没有特殊的顺序,都存储在一个特定的键(key)下,键可以是数字、字符串甚至元组。字典也是python中唯一内建的映射类型。

二.创建和使用字典

字典由多个键和其对应的值构成的键—值对组成,键和值中间以冒号:隔开,项之间用逗号隔开,整个字典是由大括号{}括起来的。

1.  phonebook = { "tom" : '666' , 'cat' : '999' , 'wzw' : '333' }

2. 可以用dict函数通过关键字的参数来创建字典:

d = dict (name='wzw',age= 22)

3. 基本字典的操作:

len (d) : 返回d中键—值对的数量

d[k]  :   返回键k上的值

d[k] = v : 将值v关联到键k上

del d[k] : 删除键为k的项

k in d : 检查d中是否有含有键为k的项

注意:字典和列表的区别:

a. 字典的键可以是任意的不可变类型

b. 成员资格查找时查找的时键而不是值

c. 即使键起初不存在也可以为它直接赋值,字典会自动添加新的项

d. 字典是不可修改的

4. 字典的方法:

(1) get

get是个更宽松的访问字典项的方法,当get访问一个不存在的键时,不会报错而会得到None值,它适用在程序  中用户若输入的是我们没有准备的值时可以作出合理的反应。

(2) update

update方法可以利用一个字典项更新另外一个字典,提供的字典中的项会被添加到旧的字典中,若有相同的项则会进行覆盖。

(3) fromkeys

fromkeys方法使用给定的键建立新的字典,每个键都对应一个默认的值None(也可以自己设立默认值),可以和dict函数一起使用。

(4) setdefault

setdefault方法与get方法类似,可以获得给定键的值,除此之外它还能在字典中不含有给定键的情况下设定相应的键值。

注意:当键不存在时,setdefault方法返回默认值并且更新字典,如果键存在那么就返回其对应的值,但是不改变字典,之前我们所提到的update方法是会覆盖到旧的值。

(5) items和iteritems

items方法将字典中所有的项以列表方式返回,但是在返回的时候没有特定的顺序;iteritems方法的作用大致相同,但是会返回一个迭代器对象而不是列表。

(6) copy

copy方法返回一个具有相同键—值对的新字典(这个方法实现的是浅复制)

注意: 在副本中替换值的时候原始字典不受影响,但是当修改副本中的值的时候原始字典也会改变。

解决办法:可以使用深复制(副本和原始字典互不影响)

(7) pop和popitem

pop方法用来获得对应于给定键的值,然后将键—值对从字典中删除。

popitem方法类似于list.pop,后者会弹出列表的最后一个元素,但不同的是因为字典没有顺序,所以popitem会弹出随机的项。

(8) clear

clear方法清除字典中的所有项,无返回值

#!/usr/lib/env python
#coding:utf-8
print" ********************用户的创建**********************"
def userscreate():
    print('注册'.center(50,'*'))
    print('*开头为必填项')
    name = raw_input('*Enter a name:')

if not name in users:
      passwd = raw_input('*Enter a password:')
      gender = raw_input("*0-'女',1-'男':")
      age = input('enter your age:')
      email = raw_input("输入邮箱:")
      if not email:
        email = None
      users[custom] = {'name':name,'passwd':passwd,'age':age,'gender':gender,'email':email}
      print("用户创建成功")
    else:
      print("用户已经存在")

def userslogin():
    print("登录".center(100,'*'))
    timeout = 0
    while timeout < 3:

name = raw_input("输入用户名:")
         if not name in users:
            print "用户不存在"
            timeout+=1
            break
         else:
            passwd = raw_input('输入密码:')
            if passwd == user[name]['passwd']:
               print '登录成功'
               break
            else:
               print '密码错误,请重新输入:'
               timeout+=1
    else:
           print '输入超时'

def userlogoff():
    print("注销".center(50,'*'))
    name = raw_input('输入要注销的用户名:')
    if name in users:
             users.pop(name)
             print('%s 已注销' %name)
    else:
             print '未注册的用户'

def usermessages():
    for i,j in users,item():
             print('%s %s \n' %(i,j))

info = '''
         *********************用户登录管理系统**********************
         1.注册新用户
         2.用户登录
         3.用户注销
         4.用户信息查询
         5.退出系统
         ***********************************************************
        '''
users = {'root':{'name':'root','passwd':'root','gender':'1','email':'','age':22},}
while 1:
     print (info)
     choice = input()
     if choice == 1:
         usercreate()
     elif choice == 2:
         userlogin()
     elif choice == 3:
         userlogoff()
     elif choice == 4:
         usermessages()
     elif choice == 5:
         exit()
     else:
         print "重新输入"

python中字典的使用相关推荐

  1. python中字典按键或键值排序

    字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键"排 ...

  2. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  3. python英语字典程序修改_详解如何修改python中字典的键和值

    我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...

  4. Python中字典对象实现原理

    python中字典对象实现原理 注:字典类型是Python中最常用的数据类型之一,它是一个键值对的集合,字典通过键来索引,关联到相对的值,理论上它的查询复杂度是 O(1) 字典是Python的一种可变 ...

  5. python中字典的几种定义方式

    python中字典的定义方式有很多种,下面给出其中一些方式: 方式1 >>> d = dict(name='Bob', age=20, score=88) >>> ...

  6. python中可以作为定界符_在 Python 中,字典和集合都是用一对 作为定界符,字典的每个元素有两部分组成,即 和 ,其中 不允许重复。_学小易找答案...

    [多选题]路由器A的G0/0/1接口配置信息如下,下列说法正确的有?(多选) acl number 3000 rule 5 deny 17 rule 10 deny 89 rule 15 deny 6 ...

  7. 【Python】Python实战从入门到精通之四 -- 教你使用Python中字典

    本文是Python实战–从入门到精通系列的第四篇文章: Python实战从入门到精通第一讲–Python中的变量和数据类型 Python实战从入门到精通第二讲–Python中列表操作详解 Python ...

  8. python中字典使用_python中字典的使用

    python中的字典的特性: 在字典中的元素是散列存放的,没有顺序, 在进行增删改查的时候使用字典中需要的关键字(key)即可. 一: 创建字典 1)直接定义一个: dict = {'ob1':'co ...

  9. python中字典按键或键值排序_[宜配屋]听图阁

    字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键"排 ...

  10. [转载] python中字典中追加_python 中字典中的删除,pop 方法与 popitem 方法

    参考链接: Python字典popitem() 1.pop 方法:删除指定的键值对,最后返回的是删除键的值. 2.popitem 方法:每次删除字典中的最后一个键值对,返回这个删除的键值对. 3.cl ...

最新文章

  1. spring mvc web.xml 例子
  2. codevs 1958 刺激
  3. Java智慧社区商业级别项目源码,拿来学习真不错
  4. vue 音乐盒app_VBox 一款基于vue开发的音乐盒 序章
  5. 小程序 数据库 时间_使用云开发数据库构建更生动的小程序
  6. 子进程 已安装 post-installation 脚本 返回错误状态 4
  7. 如何禁止普通用户通过rsh登陆计算节点
  8. JDK8新特性之Optional
  9. linux线程出错,在线程应用程序(linux,pthreads)中读取文件大小时出错
  10. 总结几个字符串类的动态规划(最长公共子串,回文子串,子序列)
  11. java 原子量_JAVA线程10 - 新特性:原子量
  12. 根据xml文件生成对应javabean类
  13. Linux网络协议栈【转载】
  14. spyder python下载_Spyder python下载
  15. Maven的setting配置详解
  16. 自成一派的风格楷体字体
  17. ADB修改mumu模拟器分辨率
  18. Vue实现拖拽升级(九宫格拖拽)
  19. 如何快速定位接口响应慢问题
  20. DirectShow实现视频的实时显示并抓图,可以设置视频参数

热门文章

  1. 火眼金睛:continuebreak
  2. JAVA如何处理上一篇下一篇,Java中如何实现分页功能
  3. 【HTML】心愿墙 Demo展示
  4. January 12th Tuesday 2010
  5. 种子项目:Vite 搭建 Vue3 + TypeScript 项目
  6. 1. sqlmap超详细笔记+思维导图
  7. python代码转成php代码的工具 或者go转成php的代码,想把odoo改成成php swoole当成web服务+go的架构
  8. Java @Overide做了什么
  9. CocosCreator 监听龙骨绑定的帧事件
  10. c++中单引号和双引号的区别