zoukankan      html  css  js  c++  java
  • python学习day06--02字典增删差改以及字符串的一些方法

    不可变类型:整型,字符串,元组

    可变类型:列表,字典

    字典:增删查改

    ①字典键必须是不可变类型

    ②无序的

    ③唯一键

    # 字典 dictionary
    # 创建
    dic = {'name': 'wwh', 'age': 23, 'is_handsome': True, 'wife': 'lq', 'hobby': 'python'}
    print(dic)
    print(dic['name'])
    
    dic1 = {}
    dic2 = dict((('name', 'wwh'), ('age', 23),))  # 最后一个逗号可有可无,逗号就是告诉python这是一个序列
    print(dic2)
    
    dic3 = dict([['name', 'wwh'], ['age', 23],])  # 中括号小括号都无所谓,只要能让python知道这是一个序列即可
    # 但不建议这么写,pycharm会报提示
    print(dic3)
    
    # 增加
    dic1['name'] = 'wwh'
    print(dic1)
    
    return1 = dic1.setdefault('name', 'lq')  # 先寻找name键,若有则不改变任何东西,若没有则创建
    return2 = dic1.setdefault('age', 23)  # 没有age,就会增加一个age键
    #setdefault会返回键对应的值,没有则增加,有则直接返回原有的
    print(return1)  # 输出wwh
    print(return2)  # 输出23
    
    # 查找
    print(dic1['name'])
    
    # 查询有哪些键
    print(dic1.keys())
    # 查询有哪些值
    print(dic1.values())
    
    print(type(dic1.keys()))
    
    # 修改
    dic1['name'] = 'igenius'
    print(dic1)
    dic4 = {'name': 'ig', 'hobby': 'python'}
    
    # update将另一个字典添加到原字典
    # 若原字典有的键,则更新键对应的值,若原字典没有的键,则增加没有的键以及对应的值
    dic4.update(dic1)
    print(dic4)
    
    
    # 删除
    del dic4['name']  # 将name的键值对删除
    print(dic4)
    dic1.clear()  # 清空字典
    print(dic1)
    a = dic4.pop('hobby')  # 将hobby的键值对删除,并且返回该键对应的值
    print(dic4)
    print(a)  #输出结果 python
    
    dic5 = {'name': 'ig', 'hobby': 'python', 'age': 33}
    b = dic5.popitem()  # 随机删除一个键值对,并以元组方式返回值
    print(dic5)
    print(b)  # 输出结果('age', 33)
    print(type(b))  # 输出结果<class 'tuple'>
    
    # 删除整个字典
    del dic5
    #  print(dic5)  # NameError: name 'dic5' is not defined
    
    
    # 其他操作以及涉及到的方法
    # 创建
    dic6 = dict.fromkeys(['age', 'bigger', 'smaller'], '25')
    print(dic6)  # {'age': '25', 'bigger': '25', 'smaller': '25'}
    
    dic6['age'] = '29'
    print(dic6)  # {'age': '29', 'bigger': '25', 'smaller': '25'}
    
    dic6 = dict.fromkeys(['age', 'bigger', 'smaller'], ['25','28'])
    print(dic6)  # {'age': ['25', '28'], 'bigger': ['25', '28'], 'smaller': ['25', '28']}
    
    dic6['age'][1] = '29'
    print(dic6)  # {'age': ['25', '29'], 'bigger': ['25', '29'], 'smaller': ['25', '29']}

    字典的嵌套、排序、遍历

    # 嵌套
    dic_nest = {
        'pen_class': {'name': 'wwh', 'age': 12},
        'pencil_class': {'name': 'ig', 'age': 16},
        'draw_class': {'name': 'iGenius', 'age': 13},
    }
    dic_nest['pencil_class']['name'] = 'lq'
    print(dic_nest)
    
    # 排序
    dic = {4: 333, 1: 542, 9: 46457}
    print(sorted(dic.items()))
    print(sorted(dic.values()))
    print(sorted(dic.keys()))
    # 输出结果
    # [(1, 542), (4, 333), (9, 46457)]
    # [333, 542, 46457]
    # [1, 4, 9]
    
    # 字典遍历
    for i in dic:  # 效率高
        print(i)  # 默认遍历字典的键
        print(dic[i])
    
    for i, v in dic.items():  # 效率低
        print(i, v)

    字符串的方法

    a = '123'
    b = '456'
    
    c = a + b  # 拼接
    print(c)
    print('hello' * 2)  # 连续的重复的输出某一个字符串
    
    c = ''.join([a, '123'])
    print(c)
    
    print(c.count('1'))  # 统计某一元素在字符串中的个数
    
    d = 'hello world'
    print(d.capitalize())  # 字符串首个字符首字母大写
    e = 'HOW AR	E YOU'
    print(e.casefold())  # 字符串全部字符小写
    print(e.center(30, '-'))  # 30代表整个字符串的长度,并将原字符串居中,前后使用'-'补足
    # 前后'-'数量不一致时,前少后多
    # 输出结果 ---------HOW ARE YOU----------
    '''
    print(e.encode())  # 应该是修改编码方式,默认是UTF-8
    '''
    
    # 判断是否以某一个字符或者字符串结尾或者开头
    print(d.endswith('d'))  # True
    print(d.endswith('ds'))  # False
    print(d.startswith('h'))  # True
    print(e)
    # 输出结果HOW AR    E YOU
    print(e.expandtabs(tabsize=20))  # e中有个	制表符,默认为8个字符,通过这个函数可设置为任意数量的字符
    # 输出结果HOW AR              E YOU
    
    f = 'hello world,hello{age} world!{name}'
    print(f)
    print(f.find('ll'))  # 查找某一个子字符串在该字符串中第一个出现的位置,并返回索引值,返回-1则表示没有
    
    
    print(f.format(name='wwh', age=32))  # 格式化输出f,括号内直接赋值
    print(f.format_map({'name': 'ig', 'age': 34}))  # 格式化输出f,括号内直接赋值,括号内插入一个字典
    
    print(f.isdigit())  # 判断是否像数字,必须是个整型
    print('23213'.isnumeric())  # 同上
    print(f.index('l'))  # 和find一样,返回一个索引值,唯一的区别是,当查找内容没有时,index会返回一个错误信息
    
    i = 'dasda2321321'
    print(i.isalnum())  # 返回布尔,是否包含字母和数字
    print('321321'.isdecimal())  # 判断是否是十进制的数
    print('23das'.isidentifier())  # 判断是不是一个非法变量
    print('asd'.islower())  # 判断是不是全小写
    print('asd'.isupper())  # 判断是不是全大写
    print(' '.isspace())  # 判断是不是空格
    print('asd'.istitle())  # 判断每个单词的首字母是不是大写
    print('ASD'.lower())  # 将字符串中的字符大写变小写
    print('dsf'.upper())  # 将字符串中的字符小写变大写
    print('AFDsda'.swapcase())  # 将字符串中大写变小写,小写变大写
    print('AFDsda'.ljust(50, '#'))  # 设置长度为50,将字符串靠左,并在后面用#补全
    print('AFDsda'.rjust(50, '#'))  # 设置长度为50,将字符串靠右,并在后面用#补全
    print('	    AFDsda
    '.strip())  # 将字符串左右两边的空格、制表符、换行全个去除
    print('	    AFDsda
    '.rstrip())  # 将字符串右边的空格、制表符、换行全个去除
    print('	    AFDsda
    '.lstrip())  # 将字符串左边的空格、制表符、换行全个去除
    print('my title title'.replace('tle', 'abc', 1))  # 将字符串中第一个参数的字符替换成第二个
    # 若有多个,默认全部替换,最后一个参数设置替换几次,输出结果
    print('hello world world'.split(' '))  # 从左向右以空格为依据切片,不保留原空格,并返回一个列表
    print('hello world world'.rsplit(' '))  # 从右向左以空格为依据切片字符,但原字符串中的空格就没有了
    # 输出结果['hello', 'world', 'world']
    print('hello world world'.split(' ', 1))  # 默认为全部分割,加了一个1,设置只分割一次
    print('hello world world'.rpartition('l'))  # 从右开始以'l'切片,但扔保留'l',只分割以此
    print('he
    ll
    o wo
    ld'.splitlines(keepends=True))
    # 按照行('
    ', '
    ', 
    ')分隔,返回一个包含各行作为元素的列表
    # 如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
    print('hello world'.title())  # 将每个单词的首字母变成大写,按照title格式
    '''
    以下为python2中的实例,python3还有待研究
    from string import maketrans 
    intab = "aeiou"
    outtab = "12345"
    trantab = maketrans(intab, outtab)
    
    str1 = "this is string example....wow!!!"
    print(str1.translate(trantab, 'xm'))  # 根据给出的对应关系替换以及删除不想要的字符
    '''
  • 相关阅读:
    SQL SERVER DBCC命令参考
    Sqlserver 死锁问题
    收集面试题目DB
    收集面试题目Net
    [转]Virtual PC 2007虚拟机上安装Ubuntu 8.10桌面版
    Tcl/tk基础-2
    【转】内存详解
    [转]C# P2P与NAT技术之二
    泛型跟KeyNotFoundException
    用InstallAware 9制作BDE安装程序
  • 原文地址:https://www.cnblogs.com/igeniuswwh/p/11258223.html
Copyright © 2011-2022 走看看