zoukankan      html  css  js  c++  java
  • python基础07--字典

    一.字典的定义:

          前面我们说过列表,它适合于将值组织到一个结构中并且通过编号对其进行引用。字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,字典中的值没有特殊的顺序,都存储在一个特定的键(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 ' %(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 "重新输入"

  • 相关阅读:
    Gym
    Gym
    Gym 101147B
    巴什博弈入门
    Hihocode 1304
    hihocoder 1441
    web前端
    ajax json html 结合
    关于获取各种浏览器可见窗口大小:
    原生JS 购物车及购物页面的cookie使用
  • 原文地址:https://www.cnblogs.com/xyt123/p/14262663.html
Copyright © 2011-2022 走看看