基本数据类型内置方法(二)
字典相关操作
类型转换
dict() 字典的转换一般不使用关键字,都是自己手动转
字典必须要掌握的操作
user_dict = {
'username': 'jason',
'password': 123,
'hobby': ['read', 'music', 'run']
}
-
按k取值(不推荐使用)
print(user_dict['username']) # jason print(user_dict['phone']) # 当k不存在时会直接报错
-
按内置方法get取值(推荐使用)
print(user_dict.get('username')) # jason print(user_dict.get('age')) # None print(user_dict.get('phone', '找不到我吧')) # 键不存在默认返回None 可以通过第二个参数自定义
-
修改数据值
user_dict['username'] = 'tony' # 键存在则修改对应的值 print(user_dict) # {'username': 'tony', 'password': 123, 'hobby': ['read', 'music', 'run']}
-
新增键值对
user_dict['age'] = 18 # 键不存在则新增键值对 print(user_dict) # {'username': 'jason','password': 123,'hobby': ['read', 'music', 'run'],'age':18}
-
删除数据
方式一:del del user_dict['username'] print(user_dict) # {'password': 123,'hobby': ['read', 'music', 'run']} 方式二:pop user_dict.pop('password') print(user_dict) # {'username': 'jason','hobby': ['read', 'music', 'run']}
-
统计字典中键值对的个数
print(len(user_dict)) # 3
-
字典三剑客
剑客一: print(user_dict.keys()) # dict_keys(['username', 'password', 'hobby']) 一次性获取字典所有的键 剑客二: print(user_dict.values()) # dict_values(['jason', 123, ['read', 'music', 'run']]) 一次性获取字典所有的值 剑客三: print(user_dict.items()) # dict_items([('username', 'jason'), ('password', 123), ('hobby', ['read', 'music', 'run'])]) 一次性获取字典的键值对数据
-
补充说明
res = dict.fromkeys(['name', 'pwd', 'hobby'], []) print(res) # {'name': [], 'pwd': [], 'hobby': []} res['name'].append('jason') res['pwd'].append(123) res['hobby'].append('study') print(res) # {'name': ['jason', 123, 'study'], 'pwd': ['jason', 123, 'study'], 'hobby': ['jason', 123, 'study']} # 当第二个公共值是可变类型的时候,一定要注意,通过任何一个键修改值都会影响所有 res = user_dict.setdefault('username','tony') print(user_dict, res) # tony 键存在则不修改 结果是键对应的值 res = user_dict.setdefault('age',123) print(user_dict, res) # 123 键不存在则新增键值对 结果是新增的值 user_dict.popitem() # 随机弹出一个键值对,采用后进先出的原则
元组相关操作
类型转换
tuple()
支持for循环的数据类型都可以转成元组
元祖必须掌握的方法(使用方法与列表差不多)
a = (1, 2, 3, 4, 5, 6,)
-
索引取值
print(a[0]) # 1
-
切片操作
print(a[0:5]) # (1, 2, 3, 4, 5)
-
间隔、方向
print(a[0:5:2]) # (1, 3, 5) print(a[-1:-5:-1]) # (6, 5, 4, 3)
-
统计元组内数据值的个数
print(len(a)) # 6
-
统计元组内某个数据值出现的次数
print(a.count(5)) # 1
-
统计元组内指定数据值的索引值
print(a.index(4)) # 3
注意:
元组内如果只有一个数据值那么逗号不能少
元组内索引绑定的内存地址不能被修改(注意区分 可变与不可变)
元组不能新增或删除数据
集合相关操作
类型转换
set()
集合内的的数据必须是不可变类型(整型、浮点型、字符串、元组)
集合内的数据是无序的,没有索引的概念
集合需要掌握的方法
- 去重
s1 = {11, 22, 11, 22, 22, 11, 222, 11, 22, 33, 22}
l1 = [11, 22, 33, 22, 11, 22, 33, 22, 11, 22, 33, 22]
s1 = set(l1)
l1 = list(s1)
print(l1) # [33, 11, 22]
集合的去重无法保留原来数据的排列顺序
- 关系运算
群体之间的差异化校验
a1 = {1, 2, 3, 4, 5, 6, 7, 8, 9}
a2 = {5, 6, 7, 8, 9, 10, 11, 12, 13}
# 1.求两个集合之间相同的部分
print(a1 & a2) # {5, 6, 7, 8, 9}
# 2.求a1独有的数据
print(a1 - a2) # {1, 2, 3, 4}
# 3.求两个集合所有的数据
print(a1 | a2) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}
# 4.求两个集合各自独有的数据
print(a1 ^ a2) # {1, 2, 3, 4, 10, 11, 12, 13}
# 5.父集与子集
就是子集的数据父集中都有,父集中的数据子集不一定有
字符编码
编码与解码
编码:将人类的字符按照指定的编码编码成计算机能够读懂的数据
字符串.encode()
a = '一条大河波浪宽,风吹稻花香两岸'
b = a.encode()
print(b) # b'\xe4\xb8\x80\xe6\x9d\xa1\xe5\xa4\xa7\xe6\xb2\xb3\xe6\xb3\xa2\xe6\xb5\xaa\xe5\xae\xbd\xef\xbc\x8c\xe9\xa3\x8e\xe5\x90\xb9\xe7\xa8\xbb\xe8\x8a\xb1\xe9\xa6\x99\xe4\xb8\xa4\xe5\xb2\xb8
解码:将计算机能够读懂的数据按照指定的编码解码成人能够读懂
bytes类型数据.decode()
print(b.decode('utf8')) # 一条大河波浪宽,风吹稻花香两岸
python2与python3的差异
python2默认的编码是ASCII,不能识别汉字,因此当给我们需要在python2中做此类操作时有两种方法
第一种:添加一个文件头
就是在编码一开始的时候就说明一下 # encoding:utf8
第二种:字符串前面加u
python3默认的编码是utf系列
标签:内置,jason,22,数据类型,123,dict,user,print,方法
From: https://www.cnblogs.com/zyg111/p/16745571.html