您的位置:首页 > 编程语言 > Python开发

Python基础:Python数据类型详解之字典与字符串

2017-03-05 23:30 1036 查看

字符串

字符串也是不改变的,具体方法如下:

name.capitalize()  #首字母大写
name.casefold()   #大写全部变小写
>>> name='bolen'
>>> name.capitalize()
'Bolen'
>>> name.casefold()
'bolen'
name.center() #定义宽度和添加的字符
>>> name.center(50,'=')
'======================bolen======================='
name.count('bo') 统计 bo出现次数
name.encode()  将字符串编码成bytes格式
>>> new=name.encode()
>>> type(new)
<class 'bytes'>

name.endswith("en")  判断字符串是否以 en结尾

>>> 'Bolen\tZhang'.expandtabs(4)
'Bolen   Zhang
将\t转换成多长的空格

name.find('A')  查找A,找到返回其索引, 找不到返回-1

format :
>>> msg = "my name is {}, and age is {}"
>>> msg.format("bolen",32)
'my name is bolen, and age is 32'
>>> msg = "my name is {1}, and age is {0}"
>>> msg.format("bolen",32)
'my name is 32, and age is bolen'
>>> msg = "my name is {name}, and age is {age}"
>>> msg.format(age=32,name="bolen")
'my name is ale, and age is 22'
format_map
>>> msg.format_map({'name':'alex','age':22})
'my name is alex, and age is 22'
#输入字典

msg.index('a')  返回a所在字符串的索引
>>> 'adf9'.isalnum()
True
>>> '9'.isalnum()
True
>>>

'9'.isdigit() 是否整数
name.isnumeric
name.isprintable
name.isspace
name.istitle
>>> name.title()
'Bo Le Na'
>>> name1=name.title()
>>> name1
'Bo Le Na'
>>> name1.istitle()
True
name.isupper

"|".join(['alex','jack','rain'])
'alex|jack|rain'

maketrans

>>> intab = "aeiou"  #This is the string having actual characters.
>>> outtab = "12345" #This is the string having corresponding mapping character
>>> trantab = str.maketrans(intab, outtab)
#先自己制作转换关系表。
>>> str = "this is string example"
>>> str.translate(trantab)
'th3s 3s str3ng 2x1mpl2'

msg.partition('is')   输出 ('my name ', 'is', ' {name}, and age is {age}')

>>> "alex li, chinese name is lijie".replace("li","LI",1)
'alex LI, chinese name is lijie'

msg.swapcase 大小写互换

>>> msg.zfill(40)
> """方法返回指定长度的字符串,原字符串右对齐,前面填充0。"""
'00000my name is {name}, and age is {age}'

>>> 'Hello world'.ljust(20,"-")
'Hello world---------'
>>> 'Hello world'.rjust(20,"*")
'*********Hello world'

name_define='tWst@123'
>>> name_define.isidentifier()
False
#检测一段字符串可否被当作标志符,即是否符合变量命名规则

def strip(self, chars=None):
""" 移除两端空白 """
>>> name=' bole '
>>> name
' bole '
>>> name.strip()
'bole'


字典

字典是键值对的无序集合,且key不能重复。

定义

>>> userdb
{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user004': 'tom'}


增加

>>> userdb['user005']='baby'
>>> userdb
{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user004': 'tom', 'user005': 'baby'}


修改

>>> userdb['user005']='angela'
>>> userdb
{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user004': 'tom', 'user005': 'angela'}


删除

字典的删除有三种方式:pop,del和popitem,其中前两种较常用。最后一种由于是随机删除元素的,一般来说并没什么卵用。

>>> userdb.pop('user003')
'kity'
>>> userdb
{'user002': 'kobe', 'user001': 'bolen', 'user004': 'tom', 'user005': 'angela'}
>>> del userdb['user004']
>>> userdb
{'user002': 'kobe', 'user001': 'bolen', 'user005': 'angela'}
>>> userdb.popitem()
('user002', 'kobe')
>>>


查找

>>>
>>> 'user002' in userdb #标准用法
True
>>> userdb.get('user004')
'tom'
>>> userdb['user004']
'tom'
>>> userdb.get('user005')#注意get不到key就没返回值,而下面的取法,get不到key就会报错。
>>> userdb['user005']
Traceback (most recent call last):
File "<pyshell#165>", line 1, in <module>
userdb['user005']
KeyError: 'user005'
>>>


多级嵌套

av_catalog = {
"欧美":{
"www.youporn.com": ["很多免费的,世界最大的","质量一般"],
"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
"x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
},
"日韩":{
"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
},
"大陆":{
"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
}
}

av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"
print(av_catalog["大陆"]["1024"])
#ouput
['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']


其他

#获取keys
>>> userdb.keys()
dict_keys(['user002', 'user003', 'user001', 'user004'])
#获取values
>>> userdb.values()
dict_values(['kobe', 'kity', 'bolen', 'tom'])
#设置默认值,注意此方法是新加,不可修改。
>>> userdb
{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user006': '希特勒', 'user004': 'tom'}
>>> userdb.setdefault('user006','bolenzhang')
'希特勒'

>>> userdb.setdefault('user006','bolenzhang')
'希特勒'
>>> userdb
{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user006': '希特勒', 'user004': 'tom'}
>>> userdb.setdefault('user001','bolenzhang')
'bolen'
>>> userdb
{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user006': '希特勒', 'user004': 'tom'}

#update
>>> newb={'user110':'michal',9:6,1:1}
>>> newb
{9: 6, 'user110': 'michal', 1: 1}
>>> userdb.update(newb)
>>> userdb
{1: 1, 'user001': 'bolen', 'user003': 'kity', 'user006': 'xitele', 'user004': 'tom', 9: 6, 'user002': 'kobe', 'user110': 'michal'}
#获取items
>>> userdb.items()
dict_items([(1, 1), ('user001', 'bolen'), ('user003', 'kity'), ('user006', 'xitele'), ('user004', 'tom'), (9, 6), ('user002', 'kobe'), ('user110', 'michal')])
#通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
>>> dict.fromkeys([1,2,3],'test')
{1: 'test', 2: 'test', 3: 'test'}


字典的循环

#方法1
>>> for key in userdb:
print(userdb[key])

1
bolen
kity
xitele
tom
6
kobe
michal
>>> userdb
{1: 1, 'user001': 'bolen', 'user003': 'kity', 'user006': 'xitele', 'user004': 'tom', 9: 6, 'user002': 'kobe', 'user110': 'michal'}
#方法2
>>> for k,v in userdb.items():
print (k,v)

1 1
user001 bolen
user003 kity
user006 xitele
user004 tom
9 6
user002 kobe
user110 michal


集合

集合是一个无序的,不重复的数据组合,它的主要作用如下:

1、去重,把一个列表变成集合,就自动去重了

2、关系测试,测试两组数据之前的交集、差集、并集等关系

# 去重
>>> b=[1,1,2,3,4,4]
>>> s = set(b)
>>> s
{1, 2, 3, 4}
s = set([3,5,9,10])      #创建一个数值集合

t = set("Hello")         #创建一个唯一字符的集合

a = t | s          # t 和 s的并集

b = t & s          # t 和 s的交集

c = t – s          # 求差集(项在t中,但不在s中)

d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)

基本操作:

t.add('x')            # 添加一项

s.update([10,37,42])  # 在s中添加多项

使用remove()可以删除一项:

t.remove('H')

len(s)
set 的长度

x in s
测试 x 是否是 s 的成员

x not in s
测试 x 是否不是 s 的成员

s.issubset(t)
s <= t
测试是否 s 中的每一个元素都在 t 中

s.issuperset(t)
s >= t
测试是否 t 中的每一个元素都在 s 中

s.union(t)
s | t
返回一个新的 set 包含 s 和 t 中的每一个元素

s.intersection(t)
s & t
返回一个新的 set 包含 s 和 t 中的公共元素

s.difference(t)
s - t
返回一个新的 set 包含 s 中有但是 t 中没有的元素

s.symmetric_difference(t)
s ^ t
返回一个新的 set 包含 s 和 t 中不重复的元素
s.copy()
返回 set “s”的一个浅复制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: