python基础之dict、set及字符

 

python基础之dict、set及字符串处理

本节内容

  1. 字典介绍及内置方法
  2. 集合介绍
  3. 字符串处理

1.字典介绍及内置方法

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典创建方法

第一种创建方法

  1. 1 dic1={"name":"xxx","age":22}

第二种创建方法,使用dict()类(工厂函数)创建,dict里面传递的参数可以是字典,列表或者其他可迭代的对象

  1. 1 dic1=dict((("name","xxx"),))
  2. 2 dic1=dict([["name","xxx"]])
  3. 3 a=[1,2,3]
  4. 4 b=["a","b","c"]
  5. 5 dic1=dict(zip(a,b))

字典的操作

    1. 1 dic1={"name":"xxx","age":22}
    2. 2 dic1["hobby"]="girl"
    3. 3 dic2=dic1.setdefault("age",18) #使用setdefault方法假如字典中有该key,则返回原来的value并不修改value
    4. 4 dic2=dic1.setdefault("hobby","girl")#假如字典中没有该key,则添加该key,value对并返回新增加的value
    1. 1 dic2={"name":"xxx","age":22}
    2. 2 dic2["name"] #通过key获取value
    3. 3 print(dic2.keys())#返回所有的key
    4. 4 print(dic2.values())#返回所有的value
    5. 5 print(dic2.items())#返回所有的item
    6. 6 print(dic2.get("name"))#通过get方法获取某个key对应的value
    1. 1 dic3={"name":"xxx","age":22}
    2. 2 dic4={"age":33,"hobby":"girl"}
    3. 3 dic3.update(dic4)#假如dic4中的keydic3中存在,那么覆盖dit3中的value,否则添加这个键值对到dic3
    4. 4 dic3["name"]="alex2"#修改字典中对应key的value
    5. 5 dic3["name"]="abc"#通过key对字典进行修改
    1. 1 dic5={"name":"xxx","age":22}
    2. 2 dic5.clear()#清空该字典内容
    3. 3 del dic5['name']#通过key删除某个键值对
    4. 4 print(dic5.popitem())#popitem将随机删除字典中的一个item并将该item返回
    5. 5 print(dic5.pop("name"))#删除指定key对应的键值对,并返回该键对应的value
    6. 6 del dic5#删除该字典
  • 其他操作及方法

    dict.fromkeys方法也可以创建字典,创建字典方式如下:

    1. 1 dic6=dict.fromkeys(['host1','host2','host3'],'test')
    2. 2 print(dic6)#{'host3': 'test', 'host1': 'test', 'host2': 'test'}
    3. 3 dic6['host2']='abc'
    4. 4 print(dic6)

    但是通过这种方式创建的字典的value初始都是同一个值,假如下面这种情况就会出现异常:

    1. 1 dic6=dict.fromkeys(['host1','host2','host3'],['test1','tets2'])
    2. 2 print(dic6)
    3. 3 {'host2': ['test1', 'tets2'], 'host3': ['test1', 'tets2'], 'host1': ['test1', 'tets2']}
    4. 4 dic6['host2'][1]='test3'
    5. 5 print(dic6)
    6. 6 {'host3': ['test1', 'test3'], 'host2': ['test1', 'test3'], 'host1': ['test1', 'test3']}

    说明这里面的value类似于浅拷贝一样的效果,修改value中的列表的内容的时候,所有value都修改了。

    dict.copy()方法是对字典的浅拷贝,返回一个和之前字典有相同内容的新字典

    dict没有内置sort方法,要对字典进行排序需要使用sorted(dict)方式,默认是根据key来进行排序,也可以根据value或者自定义方式来排序。如sorted(dict.values())就是根据value进行排序。

2.集合介绍

集合定义:把不同的可hash的元素放在一起就是一个集合。

集合的特点:没有重复值,值必须是可hash的。

集合的声明:a=set(“序列”) 里面的序列可以是一个字符串,可以是一个列表,也可以是一个字典(是字典的话,只能存储字典的key)

不可变集合:通过frozenset(“序列”)可以创建不可变集合,不可变集合和集合之间的关系和list和tuple之间的关系差不多

集合方法:

  1. 1 a = set([1, 2, 3, 4, 5]) a.add(6) # 没有返回值,添加一个元素,如果添加的元素在set里面的话,set的内容将不会被改变
  2. 2
  3. 3 a.update("hello") # Update a set with the union of itself and others将一个序列转换成set并取并集给原来的set
  4. 4
  5. 5 a.clear() # 清空集合的内容
  6. 6
  7. 7 a.remove(4) # 删除集合里面指定的key
  8. 8
  9. 9 a.pop() # 随机删除集合中的一个key并返回这个key

集合间的关系:

  1. 1 a=set([1,2,3,4,5])
  2. 2
  3. 3 b=set([4,5,6,7,8])
  4. 4
  5. 5 求交集:intersection
  6. 6
  7. 7 print(a.intersection(b))
  8. 8
  9. 9 print(a&b)
  10. 10
  11. 11 求并集:union
  12. 12
  13. 13 print(a.union(b))
  14. 14
  15. 15 print(a|b)
  16. 16
  17. 17 求差集:difference
  18. 18
  19. 19 print(a.difference(b))
  20. 20
  21. 21 print(b-a)
  22. 22
  23. 23 求对称差集 反向交集:symmetric_difference
  24. 24
  25. 25 print(a.symmetric_difference(b))
  26. 26
  27. 27 print(a^b)
  28. 28
  29. 29 print((a | b)-(a&b)) # 使用并集减去交集也能得到相同结果 集合之间可以有-运算,但是没有+运算
  30. 30
  31. 31 求父集 超集:issuperset父集 issubset子集
  32. 32
  33. 33 print(a.issuperset(b)) # a>=b
  34. 34
  35. 35 print(a>=b)
  36. 36
  37. 37 print(a.issubset(b)) # a<=b
  38. 38
  39. 39 print(a<=b)
  40. 40
  41. 41 print(a=>b) # a包含b
  42. 42
  43. 43 print(a<=b) # b包含a
  44. 44
  45. 45 print(a==b) # a和b等价

3.字符串处理

字符串处理方法比较多,下面通过分类来进行解释字符串的一些方法:

字母处理方法:

  1. 全部大写:str.upper()
  2. 全部小写:str.lower()
  3. 大小写互换:str.swapcase()
  4. 整个字符串首字母大写,其余小写:str.capitalize()
  5. 每个单词的首字母大写:str.title()

格式化相关

  1. 获取固定长度,右对齐,左边不够用默认用空格补齐,可自行在第二个参数中设置补充字符:str.rjust(width"*")
  2. 获取固定长度,左对齐,右边不够用默认用空格补齐,可自行在第二个参数中设置补充字符:str.ljust(width"*")
  3. 获取固定长度,中间对齐,两边不够用默认空格补齐,可自行在第二个参数中设置补充字符:str.center(width"*")
  4. 获取固定长度,右对齐,左边不足用0补齐:str.zfill(20)
  5. 使用format格式化输出,用{}包裹变量,(如果字符串中含有{}的话,左括号弄成{{,右括号弄成}}实现大括号转义):str.format(变量名=值)
  6. 使用format_map格式化输出,用{}包裹变量,(如果字符串中含有{}的话,左括号弄成{{,右括号弄成}}实现大括号转义)和format区别是传递参数形式不一样:str.format_map(dict)

字符串搜索相关

  1. 搜索指定字符串,没有返回-1str.find('t')
  2. 指定起始位置搜索:str.find('t',start)
  3. 指定起始及结束位置搜索:str.find('t',start,end)
  4. 从右边开始查找:str.rfind('t')
  5. 上面所有方法都可用index代替,不同的是使用index查找不到会抛异常,而find返回-1
  6. 搜索到多少个指定字符串:str.count('t')

字符串替换相关

  1. 替换oldnewstr.replace('old','new')
  2. 替换指定次数的oldnewstr.replace('old','new',maxReplaceTimes)

字符串去空格及去指定字符

  1. 去两边空格,换行符,制表符等:str.strip()
  2. 去左空格,换行符,制表符等:str.lstrip()
  3. 去右空格,换行符,制表符等:str.rstrip()
  4. 去两边字符串:str.strip('d'),相应的也有lstriprstrip

按指定字符分割字符串为数组:

  1. 默认按空格分隔,也可按照自定义分隔符分隔,第二个参数可以指定最大分隔次数:str.split(' 'maxnum)
  2. 从右往左默认按空格分隔,也可按照自定义分隔符分隔,第二个参数可以指定最大分隔次数:str.rsplit(' 'maxnum)

字符串判断相关

  1. 是否以start开头:str.startswith('start')
  2. 是否以end结尾:str.endswith('end')
  3. 是否全为字母或数字:str.isalnum()
  4. 是否全字母:str.isalpha()
  5. 是否全数字:str.isdigit()
  6. 是否全小写:str.islower()
  7. 是否全大写:str.isupper()
 
分类: python基础

第四篇:python基础之dict、set及字符的更多相关文章

  1. 【Python之路】第四篇--Python基础之函数

    三元运算 三元运算(三目运算),是对简单的条件语句的缩写 # 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 “值1” 赋值给result变量,否则,将“值2” ...

  2. 第四篇.python的基础

    目录 第四篇.python基础01 1. 变量 2. 常量 3. python变量内存管理 4. 变量的三个特征 5. 花式赋值 6. 注释 7. 数据类型基础 8. 数字类型 9. 字符串类型 10 ...

  3. 【0728 | 预习】第三篇 Python基础

    第三篇 Python基础预习 Part 1 变量 一.什么是变量? 二.为什么要有变量? 三.定义变量 四.变量的组成 五.变量名的命名规范 六.变量名的两种风格 Part 2 常量 Part 3 P ...

  4. python基础之dict、set及字符

    python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射类型,采用键值对(key-value)的形式存 ...

  5. python基础——使用dict和set

    python基础——使用dict和set dict Python内置了字典:dict的支持,dict全称dictionary,在其它语言中也称为map(映射),使用键-值(key-value)存储,具 ...

  6. python学习第四讲,python基础语法之判断语句,循环语句

    目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...

  7. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  8. 四、Python基础(1)

    目录 四.Python基础(1) 四.Python基础(1) 1.什么是变量? 一种变化的量,量是记录世界上的状态,变指得是这些状态是会变化的. 2.为什么有变量? 因为计算机程序的运行就是一系列状态 ...

  9. 前端第四篇---前端基础之jQuery

    前端第四篇---前端基础之jQuery 一.jQuery介绍 二.jQuery对象 三.jQuery基础语法 四.事件 五.动画效果 六.补充each 一.jQuery简介 1.jQuery介绍 jQ ...

随机推荐

  1. scanf(),fscanf的详解

    我们这里只讨论fscanf(或者scanf)的格式,因为这些细节在其他贴里并没有涉及,阅读此文,你可以少走一些弯路.只讲结果,深层原因并不分析. FILE *pFile:float x1; char ...

  2. 【Mongous】write after end

    执行1(---) 执行2(----) 完成1(POST) 执行3(---)

  3. Delphi WebService 需要注意 转

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://gang4415.blog.51cto.com/225775/251997 Web ...

  4. attitude

    刚看到一段挺有趣的游戏,分享一下. 如果 令 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 分别等于 1 2 3 4 5 6 7 8 9 10 ...

  5. ASP.net:截取固定长度字符串显示在页面,多余部分显示为省略号

    方法一: public static string GetString(string str, int length) { int i = 0, j = 0; foreach(char chr in ...

  6. Android学习笔记(三)Application类简介

    每次运行APP时,Application类都保持实例化状态.与Activity不同,配置改变不会导致应用程序重启.通过继承Application类,可以完成一下3项工作: · 对Android运行时广 ...

  7. UVAlive 3263 That Nice Euler Circuit(欧拉定理)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21363 [思路] 欧拉定理:V+F-E=2.则F=E-V+2. 其 ...

  8. 《University Calculus》-chape8-无穷序列和无穷级数-基本极限恒等式

    基于基本的极限分析方法(诸多的无穷小以及洛必达法则),我们能够得到推导出一些表面上看不是那么显然的式子,这些极限恒等式往往会在其他的推导过程中用到,其中一个例子就是概率论中的极限定理那部分知识.

  9. Google的一些功能和软件

    本博文的主要内容有 .Google的一些功能和软件 Google的一些功能和软件 1.  iGoogle 2.  Google Earth 3.  Google Talk http://www.goo ...

  10. 钥匙计数之一 - HDU 1438(状态压缩打表)

    分析:首先想到每个钥匙的结尾有4种状态,不过题目还需要判断有三种不同的钥匙深度,所以每种深度结尾后有2^4种状态,0000->1111,不过题目还需需要有相邻的钥匙深度大于等于3,所以需要两种不 ...