zoukankan      html  css  js  c++  java
  • Python-字典

    一、概念

    字典用大括号{}表示,键值对格式。优点是取数据方便,速度快。

    从string到list到dict,取数据越来越简单。

    字典是无序的。

    下面是一个字典。这个字典包含了4个键值对。4个key分别为:name、sex、addr、age。每个key都有对应得value。

    二、字典操作

    1、查

    有2种方法可以对字典进行查询。

    第一种是get,语法格式为:dict.get('key'),查对应key的值。

    此方法的优点是,可以定义假如key不存在,取到的默认值。如果不定义,返回None,不会报错。

    第二种语法格式为:dict['key'],也是查询对应key的值,但是如果key不存在会报错。

      

    另外,还可以查询字典所有的key,value,k-v。

    2、增

    增也有2种方法。

    第一种,直接dict['new_key']=value。采用这种方法不止可以新增k-v对,还可以修改已有的key对应的value。

     第二种,语法格式为:dict.setdefault('new_key','value')。这种方法如果key存在,不能修改对应的值,也不会报错。

     

    3、改

    在上一部分已经介绍了如何修改,dict['new_key']=value即可。要把name的值改为小红,直接infos['name']='小红'就可以了。

    4、删

    (1)dict.pop('key'),删除指定的key。如果key不存在会报错。

    (2)dict.popitem(),随机删除一个key,无法指定key

    (3)del dict['key'],删除指定key。如果key不存在会报错。

     

     三、取字典中的值

     字典取值也是一层层的取。

     例:

    package = {
       'pack_1':{
          'name':'小兰',
          'phone':18888888888,
          'addr':'北京',
          'sex':'女',
          'money':200,
          'contain':['books','clothes','cup','hat']
       },
       'pack_2':{
          'weight':'1.5kg',
          'contact':['phone','email'],
          'cities':  {
                'china':['北京','上海','深圳'],
                'usa':['纽约','洛杉矶','华盛顿'],
                'Australia':['悉尼','墨尔本']
             }
       }
    }
    # 取pack_2的洛杉矶
    print(package['pack_2']['cities']['usa'][1])
    #取出pack_2所有的中国城市
    print(package['pack_2']['cities']['china'])
    #在pack_1中增加'contain'元素,增加'shoes'
    package['pack_1']['contain'].append('shoes')
    print(package['pack_1']['contain'])
    #money增加100
    package['pack_1']['money'] = package['pack_1']['money'] + 100
    print(package['pack_1']['money'])
    

    分析:

    (1)取‘洛杉矶’时,首先要取到usa这一层  package['pack_2']['cities']['usa'],usa这一层是列表,所以接下来应该按照 list 取元素的方式取。

    (2)增加contain中的元素,首先要取到contain这一层,也就是 package['pack_1']['contain'],contain是 list,因此用list增加元素的方法增加'shoes'

    运行结果为:

    四、字典循环

    字典循环,循环的是key。将上面的字典循环。

      

    如果想k-v都循环,可以用下面的方式:

    五、下面做一个字典的小练习

    请设计一个注册的小程序,实现以下功能:(1)输入用户名,密码,再次确认密码(2)校验用户名是否已经注册,已经注册的不允许再次注册;(3)校验两次输入密码是否一致,不一致给出提示;(4)最多输入错误3次;(5)注册成功后,将新的用户添加进去。

    users = {
        'mary':'123456',
        'lily':'456789'
    }
    for i in range(3):
        username = input('账号:').strip()
        passwd = input('密码:').strip()
        cpasswd = input('密码确认:').strip()
        if username=='' or passwd=='' or cpasswd=='':
            print('用户名/密码不能为空')
        elif username in users:
            print('用户名已经被注册')
        elif passwd!=cpasswd:
            print('两次输入的密码不一致')
        else:
            print('恭喜,注册成功!')
            users[username]=passwd
            break
    else:
        print('错误次数过多')
    print(users)

    六、字典排序

    字典是无序的,所以不能直接对字典进行排序。

    d.items(),是取字典的key和value,结果是一个二维数组

    对字典的排序方法如下:

  • 相关阅读:
    QT学习——dialog、widget、mainwindow的区别和选择
    剑指offer——二叉树的深度
    位运算实现加减乘除四则运算
    剑指offer——求两个整数和
    C++常用设计模式
    从编程实现角度学习 Faster R-CNN(附极简实现)
    剑指offer——最小的k个数
    剑指offer——对称二叉树
    java 定时器
    rocketmq consumer接收到的MessageExt中各个字段的说明
  • 原文地址:https://www.cnblogs.com/zhxwind/p/8660553.html
Copyright © 2011-2022 走看看