字典
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的.可哈希表示key必须是不可改变的类型,如:整型,字符串,元组
字典是除列表以外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象结合,两者之间的区别在于,字典当中的元素通过键来存取,而不是通过索引来存取.
字典两大特点
1.无序
2.键唯一
不可变类型:整型,字符串,元组
可变类型:列表,字典
字典操作
创建字典用花括号{},键值对之间用逗号隔开
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
print(dic1)
字典增
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
dic1['xb']=22 #这样就可以增加
print(dic1)
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
a=dic1.setdefault('age',34) #这样如果值有,就不做更改,没有就在字典增加新的键值对,这样创建有返回值.
print(a) #用一个变量接收返回值
print(dic1)
查
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
print(dic1['name'])
查看字典中所有的键
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
print(dic1.keys()) #如果是要查值就换成value就可以,操作一样
dict_keys(['name', 'age', 'sex', 'hobby'])
将查到的键做一个列表转换
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
print(list(dic1.keys()))
改
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
dic1['name']='a' #取出相应的值,再重新赋值,就是修改
print(dic1)
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
dic2={'a':22,'h':'er'}
dic1.update(dic2) #这个就是将dic2插入dic1中,dic2没有变化,如果,有相同的键将会做覆盖
dic2={'name':'dage','age':23} #这样两个相同的键,对应的值就会变成‘dage’和23
删
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
del(dic1['name']) #删除对应的键值对
print(dic1)
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
dic1.clear() #清空字典
print(dic1)
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
a=dic1.pop('age') #删除对应的值,用变量接收返回值
print(dic1)
print(a)
dic1={'name':'yui','age':32,'sex':'man','hobby':'girl'}
a=dic1.popitem() #随机删除
print(dic1)
print(a)
其他操作
创建字典,不常用
dic4=dict.fromkeys(['host1','host2,''host3'],'test')
print(dic4)
字典嵌套
catlog = {
"商":{
'abc.com':["很多","漂亮"],
'bcd.com':["免费","高达"]
},
"唐":{
'tang.com':["强大","厉害"]
},
"宋":{
"1024":["免费"]
}
}
如果要修改字典嵌套里面的内容,首先找到字典的键,再找到键对应的值,再找到对应的列表,再找到对应的位置,对其赋值即可
比如要将漂亮修改成美丽
catlog = {
"商":{
'abc.com':["很多","漂亮"],
'bcd.com':["免费","高达"]
},
"唐":{
'tang.com':["强大","厉害"]
},
"宋":{
"1024":["免费"]
}
}
catlog["商"]['abc.com'][1]="美丽" #这样就可以
print(catlog)
字典是根据键来排序
dic2={5:'43',1:'98',10:'09'}
print(sorted(dic2.items()))
字典遍历
dic2={5:'43',1:'98',10:'09'}
for i in dic2:
print(i) #这样打印的是键
下面两种方式都可以查到对应的键值对,第一种效率高
dic2={5:'43',1:'98',10:'09'}
for i in dic2:
print(i ,dic2[i])
dic2={5:'43',1:'98',10:'09'}
for i,v in dic2.items(): #这个有转换
print(i,v )
字符串string
字符串是以单引号或双引号括起来的任意文本
双引号本身只是一种表示方式,不是字符串的一部分,因此,字符串只有引号括起来的内容,如果单引号本身是一个字符,那就用双引号括起来.
字符串操作
创建字符串
a = "Let's go"
b= 'hello'
重复输出字符串
print('hello'*20)
通过索引取字符串中字符,和列表切片操作一样
print('hello'[2:])
判断关键字是否在字符串里面
print('ll' in 'hello') #在的话返回一个True
格式化字符串
%s 占位符号
print('%s' in '%'name)
字符串拼接
两种方式实现的效果一样
a='123'
b='abc'
c=a+b
print(c)
a='123'
b='abc'
c= ''.join([a,b]) #创建一个空字符串'',引用字符串内置的方法join,这样方法较好
print(c)
python内置方法
st='hello kitty'
print(st.count('l')) #统计元素个数
print(st.capitalize()) #首字母变大小
print(st.center(30,'-')) # 居中
print(st.endswith('y')) #以某个字符串结尾,返回布尔值
print(st.startswith('h')) #以某个内容开头,返回布尔值
st='hello kitty {name} is {age}'
print(st.format(name='abc',age=23)) #格式化输出另一种方式
print(st.format_map({'name':'abc','age':23}))
print(st.index('t'))
print(st.isalnum())
print(st.isdecimal())
print(st.isdigit())
print(st.isidentifier())
print(st.islower())
print(st.isupper())
print(st.isspace())
print(st.title())
print(st.lower())
print(st.upper())
print(st.swapcase())
print(st.ljust())
print(st.rjust())
print(st.lstrip())
print(st.strip())
print(st.replace())
print(st.split())
print(st.title())
常用
print(st.count('l')) #统计元素个数
print(st.center(30,'-')) # 居中
print(st.startswith('h')) #以某个内容开头,返回布尔值
print(st.find('t')) #查找到第一个元素,并将索引值返回
print(st.format(name='abc',age=23)) #格式化输出另一种方式
print(st.lower())
print(st.upper())
print(st.replace())
print(st.split())
print(st.strip())
Python 的字符串常用内建函数如下:
序号 | 方法 | 描述 |
---|---|---|
1 | capitalize() | 将字符串的第一个字符转换为大写 |
2 | center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
3 | count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
4 | bytes.decode(encoding=“utf-8”, errors=“strict”) | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
5 | encode(encoding=‘UTF-8’,errors=‘strict’) | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’ |
6 | endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
7 | expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
8 | find(str, beg=0, end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
9 | index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
10 | isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
11 | isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
12 | isdigit() | 如果字符串只包含数字则返回 True 否则返回 False… |
13 | islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
14 | isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
15 | isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False. |
16 | istitle() | 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
17 | isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
18 | join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
19 | len(string) | 返回字符串长度 |
20 | ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
21 | lower() | 转换字符串中所有大写字符为小写. |
22 | lstrip() | 截掉字符串左边的空格或指定字符。 |
23 | maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
24 | max(str) | 返回字符串 str 中最大的字母。 |
25 | min(str) | 返回字符串 str 中最小的字母。 |
26 | replace(old, new [, max]) | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
27 | rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找. |
28 | rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始. |
29 | rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
30 | rstrip() | 删除字符串字符串末尾的空格. |
31 | split(str="", num=string.count(str))num=string.count(str)) | 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
32 | splitlines([keepends]) | 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
33 | startswith(substr, beg=0,end=len(string)) | 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
34 | strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
35 | swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
36 | title() | 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
37 | translate(table, deletechars="") | 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
38 | upper() | 转换字符串中的小写字母为大写 |
39 | zfill (width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
40 | isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |