zoukankan      html  css  js  c++  java
  • 【Python025-字典】

    一、字典

    1、创建和访问字典(字典是大括号表示,字典是映射类型)

    语法类型:键:key,值:value,用冒号隔开

    ---

    >>> dict1 = {'李宁':'一切皆有可能','耐克':'just do it','阿迪达斯':'Impossible is nothing','鱼C工作室':'编程改变世界'}
    >>> print('鱼C工作室的口号是:',dict1['鱼C工作室'])   #dict1['鱼C工作室']):加上的是键
    鱼C工作室的口号是: 编程改变世界

    2、尝试一下将数据(‘F’:70,'C':67,''h:104,'i':105,'s':115)创建为一个字典并访问‘C’对应的值?

    >>> dict1={'F':70,'C':67,'h':104,'i':105,'s':115}
    >>> print(dict1['C'])
    67
    >>>

    -----------------------------------------

    >>> dict2 = dict((('F', 70), ('i',105), ('s',115), ('h',104), ('C',67)))
    >>> dict2['C']
    67
    >>>

    3、创建字典的集中方式:

    >>> a = dict(one=1, two=2, three=3)
    >>> b = {'one': 1, 'two': 2, 'three': 3}
    >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
    >>> d = dict([('two', 2), ('one', 1), ('three', 3)])
    >>> e = dict({'three': 3, 'one': 1, 'two': 2})
    打印出来的结果都是:{'one': 1, 'two': 2, 'three': 3}

    4、字典和字符串的结合:

    data = "1000,小甲鱼,男"
    MyDict = {}
    # 还记得字符串的分割方法吧,别学过就忘啦^_^
    (MyDict['id'], MyDict['name'], MyDict['sex']) = data.split(',')

    print("ID:   " + MyDict['id'])
    print("Name: " + MyDict['name'])
    print("Sex   " + MyDict['sex'])

    '''
    执行结果:
    ID:   1000
    Name: 小甲鱼
    Sex   男
    '''

    split()函数:

    Python中有split()和os.path.split()两个函数,具体作用如下:

    split():拆分字符串。通过制定分隔符对字符串进行切片,并返回分割后的字符串列表(list)。如:split(‘,’)通过,号分隔

    os.path.split():按照路径将文件名和路径分隔开

    一、函数说明

    1、split()函数

    语法:str.split(str="",num=string.count())[n]

    参数说明:

    str:表示分隔符,默认是空格,但是不能为空(‘’)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素

    num:表示分隔次数。如果存在参数num,则仅分隔成num+1个子字符串,并且每一个子字符串可以赋给新的变量

    [n]:表示选择第几个切片

    注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略

    2、os.path.split()函数:

    语法:os.path.split('PATH')

    参数说明:
    1、PATH指一个文件的全路径作为参数

    2、如果给出的是一个目录和文件名,则输出路径和文件名

    3、如果给出的是一个目录名,则输出路径和为空的文件名

    二、实例

    1、常用实例

    u = "www.yizhibo.com"

    #使用默认分隔符

    >>> u.split()
    ['www.yizhibo.com']

    #使用'.'分隔符,并且分隔1次

    >>> u.split('.',1)
    ['www', 'yizhibo.com']

    #分隔两次

    >>> u.split('.',2)
    ['www', 'yizhibo', 'com']

    #分隔2次,并取序列为1的项

    >>> u.split('.',2)[1]
    'yizhibo'

    #分隔最多次(实际与不加num参数相同)

    >>> u.split('.',-1)
    ['www', 'yizhibo', 'com']

    #分隔两次,并把分割后的三部分保存到三个文件

    >>> u1,u2,u3=u.split('.',2)

    >>> u1
    'www'
    >>> u2
    'yizhibo'
    >>> u3
    'com'

    2、去掉换行符

    >>> c = '''say
    hello
    baby'''
    >>> c
    'say hello baby'

    >>> c.split(' ')
    ['say', 'hello', 'baby']

    3、一个超级好的例子:

    >>> str="hello boy<[www.doiido.com]>byebye"
    >>> str.split("[")[1].split("]")[0]
    'www.doiido.com'


    >>> str.split('[')[1].split(']')[0]
    'www.doiido.com'


    >>> str.split("[")[1].split("]")[0].split('.')
    ['www', 'doiido', 'com']

    三、动手题:

    1、尝试利用字典的特性编写一个 通讯录程序,功能如图:

    具体代码:

    print("""
    |--- 欢迎进入通讯录程序 ---|
    |---  1:查询联系人资料 ---|
    |---  2:插入新的联系人 ---|
    |---  3:删除已有联系人 ---|
    |---  4:退出通讯录程序 ---|""")

    key = 5
    dict1 = {'尘封':'18088888888'}

    while key!=4:
        key = int(input('请输入相关的指令代码:'))
        if key == 1:
            temp = input("请输入联系人的姓名:")
            if temp in dict1:
                print('%s:%s'%(temp,dict1[temp]))
            else:
                temp1 = input("请输入联系人电话:")
                dict1[temp]=temp1
                print('添加的联系人资料为:%s --> %s'%(temp,dict1[temp]))
            continue
        elif key ==2:
            temp = input("请输入联系人的姓名:")
            if temp in dict1:
                print('您输入的姓名已在通讯录中存在 -->%s:%s'%(temp,dict1[temp]))
                x = input("是否修改用户资(YES/NO)")
                if x == 'YES':
                    tel = input("请输入用户联系电话:")
                    dict1.update({temp:tel})
                    print('修改后的联系人资料为 -->%s:%s'%(temp,dict1[temp]))
                else:
                    continue
            else:
                temp1 = input("请输入联系人电话:")
                dict1[temp]=temp1
                print('添加的联系人资料为:%s --> %s'%(temp,dict1[temp]))
        elif key ==3:
            temp = input("请输入要删除的联系人姓名:")
            if temp in dict1:
                flag = input("确定要删除此联系人?(YES/NO)")
                if flag == 'YES':
                    del(dict1[temp])
                    print('联系人 %s 删除成功!'%temp)
                else:
                    continue
            else:
                print('%s 不在通讯录中!'%temp)
        elif key ==4:
            print("|--- 感谢使用通讯录程序 ---|")
            break

    ==================== RESTART: /Users/wufq/Desktop/通讯录.py ====================

    |--- 欢迎进入通讯录程序 ---|
    |---  1:查询联系人资料 ---|
    |---  2:插入新的联系人 ---|
    |---  3:删除已有联系人 ---|
    |---  4:退出通讯录程序 ---|
    请输入相关的指令代码:1
    请输入联系人的姓名:尘封
    尘封:18088888888
    请输入相关的指令代码:2
    请输入联系人的姓名:尘封
    您输入的姓名已在通讯录中存在 -->尘封:18088888888
    是否修改用户资(YES/NO)YES
    请输入用户联系电话:15624963195
    修改后的联系人资料为 -->尘封:15624963195
    请输入相关的指令代码:3
    请输入要删除的联系人姓名:尘封
    确定要删除此联系人?(YES/NO)YES
    联系人 尘封 删除成功!
    请输入相关的指令代码:4
    |--- 感谢使用通讯录程序 ---|
    >>>
    ==================== RESTART: /Users/wufq/Desktop/通讯录.py ====================








                
                

  • 相关阅读:
    4.2 [单选]2011年12月30日,国务院办公厅公布的三网融合第二阶段试点城市有()个 - 关于三网融合(主讲:凌捷)笔记
    4.1 [单选]两化融合中的两化是指 - 关于两化融合(主讲:凌捷)笔记
    [单选]物联网产业链的主要产品不包括下列哪一项 - 关于物联网(主讲:柳毅)笔记
    关于云计算(主讲:柳毅)笔记
    [转]iis7.5+win2008 出现 HTTP Error 503. The service is unavailable.
    delphi中Bitmap位图与base64字符串相互转换
    HTTP 错误 404.2
    这3周以来的面试总结(C#/.net 智能硬件/物联网)
    2017.4找工作面试记录-第三周(3)
    2017.4找工作面试记录-第三周(2)--金蝶
  • 原文地址:https://www.cnblogs.com/frankruby/p/9255710.html
Copyright © 2011-2022 走看看