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\tE 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中有个\t制表符,默认为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('\t    AFDsda\n'.strip())  # 将字符串左右两边的空格、制表符、换行全个去除
print('\t    AFDsda\n'.rstrip())  # 将字符串右边的空格、制表符、换行全个去除
print('\t    AFDsda\n'.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\nll\ro wo\r\nld'.splitlines(keepends=True))
# 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表
# 如果参数 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'))  # 根据给出的对应关系替换以及删除不想要的字符
'''

 

posted @ 2019-07-28 11:09  iGenius  阅读(251)  评论(0编辑  收藏  举报