首页 > 其他分享 >9月30日内容总结——数据类型内置方法剩余部分(字典、元组、集合)、字符编码的概念及使用

9月30日内容总结——数据类型内置方法剩余部分(字典、元组、集合)、字符编码的概念及使用

时间:2022-09-30 17:35:53浏览次数:51  
标签:jason 30 数据类型 元组 123 dict user print hobby

目录

一、字典的内置方法

1、类型转换(把其他类型转换成自己的类型)

与之前的数据类型相同,字典的转换方法就是dict()。但是字典的转换条件很苛刻,只有以下两种情况下的字符串可以用于转换,所以通常我们都是自己定义。

两种转换形式:

# 转换方法一:
nfo = dict([['name', 'tony'], ('age', 18)])
# 如果我们想用dict方法转换字典,需要在括号内建立一个列表并在列表内建立两个列表分别放入键(key)和值(value),否则就报错。
print(nfo)  # 输出结果:{'name': 'tony', 'age': 18}

# 转换方法二:fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
nfo1 = {}.fromkeys(('name', 'age', 'sex'), None)
print(nfo1)  # 输出结果:{'name': None, 'age': None, 'sex': None}

2、取值

第一种方法:

我们可以通过键(key)取值,但是我们需要注意,如果没有这个键(key),就会直接报错。

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
    }

print(user_dict['username'])  # jason
print(user_dict['phone'])  # k不存在会直接报错

第二种方法:

我们也可以通过使用.get方法来取值,如果没有这个键,默认会返回None,也可以自己定义返回值,不会报错。

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
    }

print(user_dict.get('username'))  # jason
print(user_dict.get('age'))  # None
# get方法可以有两个参数,第一个参数用于查找键(key),第二个参数用于在找不到的情况下给出提示
print(user_dict.get('username', '没有哟 嘿嘿嘿'))  # jason   键存在的情况下获取对应的值
print(user_dict.get('phone', '没有哟 嘿嘿嘿'))  # 键不存在默认返回None 可以通过第二个参数自定义

3、修改数据值

由于字典是无序的,我们要通过键来修改值。

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
    }
    
    
user_dict['username'] = 'java'
print(user_dict)
# 结果如下:{'username': 'java', 'password': 123, 'hobby': ['read', 'music', 'run']}

4、增加数据值

字典中增加新的值不需要使用方法,依旧是输入键和值,如果键存在的时候,就是修改值,如果键不存在,就是新增值。

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
    }
    
    
user_dict['language'] = 'java'
print(user_dict)
# 结果如下:{'username': 'jason', 'password': 123, 'hobby': ['read', 'music', 'run'], 'language': 'java'}

append方法

需要字典的值都是列表才能使用

# 这里的append方法其实和根据键增加值是一样的效果
user_test = {'name':[1],'pwd':[1],'hobby':[1]}
user_test['name'].append('jason')
user_test['pwd'].append(123)
user_test['hobby'].append('study')
print(user_test)

# 结果如下:{'name': [1, 'jason'], 'pwd': [1, 123], 'hobby': [1, 'study']}

从代码中我们可以得出结论,当字典的值是可变类型的时候,可以使用append方法加入值,当值为列表的时候会加在列表末尾。

5、删除数据值

1.del 方法

del是删除的通用方法,在del后方跟上删除的键就能把键和值一起删了

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}

del user_dict['username']
print(user_dict)
# 结果:{'password': 123, 'hobby': ['read', 'music', 'run']}

2.pop方法

跟其他方法中的用法相同,在删除的同时,可以取得删除对象的值(键行)

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}

res = user_dict.pop('password')
print(user_dict)
# 结果:{'hobby': ['read', 'music', 'run']}
print(res)  # 123

6、统计字典中键值对的个数

len方法可以统计字典中的数据个数。

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}

print(len(user_dict))  # 3

7、字典三剑客

1.keys方法

可以打印出所有的键

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}

print(user_dict.keys())  
# 一次性获取字典所有的键 dict_keys(['username', 'password', 'hobby'])

2.values方法

可以打印出所有的值

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}

print(user_dict.values()) 
# 一次性获取字典所有的值 dict_values(['jason', 123, ['read', 'music', 'run']])

3.items方法

可以把所有键值对都打印出来

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}

print(user_dict.items())  
# 一次性获取字典的键值对数据  dict_items([('username', 'jason'), ('password', 123), ('hobby', ['read', 'music', 'run'])])

这里拓展一种更加方便的输出方式

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}

for i in user_dict.items():
    k, v = i
    print(k)
    # k会单独打印所有的键
    # 结果:
    '''
    username
    jason
    password
    '''
    print(v)
    # v会单独打印所有的值
    # 结果
    '''
    123
    hobby
    ['read', 'music', 'run']
    '''
    
    # 当然我们可以把两者放在一起打印出一个个的键值对
    print(k, v)
    # 结果
    '''
    username jason
	password 123
	hobby ['read', 'music', 'run']
    '''

8、补充说明

fromkeys方法

多用于快速生成值相同的字典

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}

res = dict.fromkeys(['name', 'pwd', 'hobby'], [])
print(res)  
# 结果:{'name': [], 'pwd': [], 'hobby': []}

使用formkeys方法创建的列表在使用append方法加入值的时候是同时往所有的键中加入值

res = dict.fromkeys(['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']}

setdefault方法

setdefault方法有两个参数,第一个参数是键,第二个参数是想要插入的值。

当key存在时则不做任何修改,并返回已存在key对应的value值

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}

res = user_dict.setdefault('username','tony')
print(user_dict, res)  # 键存在则不修改 结果是键对应的值
# {'username': 'jason', 'password': 123, 'hobby': ['read', 'music', 'run']} jason

当key不存在则新增键值对,并将新增的value返回

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}

res = user_dict.setdefault('age',123)
print(user_dict, res)  # 键不存在则新增键值对 结果是新增的值
{'username': 'jason', 'password': 123, 'hobby': ['read', 'music', 'run'], 'age': 123} 123

popitem方法

跟pop方法的用法相似,默认情况下会先删除最后一个插入的键值对,同样我们也可以用变量名绑定这个键值对。

user_dict = {
    'username': 'jason',
    'password': 123,
    'hobby': ['read', 'music', 'run']
}


res1 = user_dict.popitem()  # 弹出键值对 后进先出
print(res1)
# 结果:('age', 123)

二、元组的内置方法

1、类型转换(把其他类型转换成自己的类型)

tuple()方法,可以for循环的数据类型都是可以转换成元组类型的

2、索引取值

元组的索引取值跟列表的相似,根据索引位置就可以得到对应的值

a = (1, 2, 3, 4, 5)

print(a[3])  # 结果是4

切片取值

元组的切片取值也跟列表相似,它的顺序、步幅也是一样设置的。

a = (1, 2, 3, 4, 5)
print(a[0:3])  # (1, 2, 3)
print(a[2:3])  # (3,)
print(a[::-1])  # (5, 4, 3, 2, 1)
print(a[::])  # (1, 2, 3, 4, 5)

3、统计元组内数据个数——len()

a = (1, 2, 3, 4, 5)

print(len(a))  # 值为5

4、统计某一数据值出现的次数——count

b = (1,1,1,2,2,3,3,)

print(b.count(1))  # 结果为为3

5、查找指定数据值的索引——index

a = (1, 2, 3, 4, 5)

print(a.index(3))  # 结果为2

6、一些注意事项

1.元组的内部如果只有一个数据值,后面需要跟上逗号,否则就会变成数据值对应的类型。

2.元组是不可变类型,但是当元组内绑定上可变类型的时候,绑定的那个可变类型中的数据时可以修改的。

三、集合的内置方法

1、类型转换(把其他类型转换成自己的类型)

这里需要注意,只能把不可变类型的数据值转换成集合

注:集合内部也是无序的,没有索引

s = set([1,2,3,4])
s1 = set((1,2,3,4))
s2 = set({'name':'jason',})
s3 = set('oscar')
print(s)
print(s1)
print(s2)
# 只能取到键
print(s3)
# 结果如下:
'''
{1, 2, 3, 4}
{1, 2, 3, 4}
{'name'}
{'s', 'a', 'r', 'c', 'o'}
'''

2、需要掌握的方法

1.去重

当我们对其他类型数据使用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(s1)
print(l1)
# 结果如下:
'''
{33, 11, 22}
[33, 11, 22]
'''

2.关系运算

我们可以使用一些符号对集合进行关系运算,这些符号就是一些集合内置方法的化简。

# 假设这是两个人的好友列表
f1 = {'jason', 'tony', 'jerry', 'oscar'}  # 用户1的好友列表
f2 = {'jack', 'jason', 'tom', 'tony'}  # 用户2的好友列表

# 1.求两个人的共同好友
print(f1 & f2)  # {'jason', 'tony'}
# .intersection()方法也是这个效果:得到集合a与集合b共有的元素。

# 2.求用户1独有的好友
print(f1 - f2)  # {'jerry', 'oscar'}
# difference()方法也是这个效果:得到集合a中包含,但集合b中不包含的元素。

# 3.求两个人所有的好友
print(f1 | f2)  # {'jason', 'jack', 'tom', 'tony', 'oscar', 'jerry'}
# a.union(b) 得到集合a和集合b中,包含的所有元素。 

# 4.求两个人各自独有的好友
print(f1 ^ f2)  # {'oscar', 'tom', 'jack', 'jerry'}
# symmetric_difference()方法也是这个效果

# 5.父集:一个集合是否包含另外一个集合

# 包含则返回True
print({1, 2, 3} > {1, 2})
# True
print({1, 2, 3} >= {1, 2})
# True
# 不存在包含关系,则返回False
print({1, 2, 3} > {1, 3, 4, 5})
# False
print({1, 2, 3} >= {1, 3, 4, 5})
# False

# 6.子集

print({1, 2} < {1, 2, 3})
# True
print({1, 2} <= {1, 2, 3})
# True

# a.issuperset(b) 判断集合b是否为集合a的子集,即集合b中的元素是否全部包含在集合a中。是为True,否为False。
# a.issubset(b) 判断集合a是否为集合b的子集,即集合a中的元素是否全部包含在集合b中。是为True,否为False。

3、需要了解的方法

1.计算集合中的数据值个数——len()

#长度len()
a = {"11111", 666}
print(len(a))  # 结果为2

2.添加

add
#添加操作.add()
a = {"11111", 666}
a.add("yyds")
print(a)  # 结果:{"11111", 666, "yyds"}
update(x)

向集合中,添加x中的每一个元素。x可以是字符串、列表、元组、集合类型。

#添加操作.update()
a = {"11111", 666}
a.update("yyds", "关注了")
print(a)  # 结果:{"11111", 666, "yyds", "关注了"}

3.删除操作

.remove(x) 删除集合中的元素x。

#删除操作.remove()
a = {"编程八点档", 666}
a.remove(666)
print(a)  # {"编程八点档"}

.discard(x) 删除集合中的元素x。

#删除操作.discard()
a = {"编程八点档", 666}
a.discard(666)
print(a)  # {"编程八点档"}

.pop() 随机删除集合中的某个元素。

#删除操作.pop()
a = {"编程八点档", 666}
a.pop()
print(a)  # {666} 

.clear() 清空集合。

#删除操作.clear()
a = {"编程八点档", 666}
a.clear()
print(a)  # set()

四、字符编码

概念讲解:

对于文本文件,因为计算机只认识二进制,所以需要一个翻译本来充当媒介让计算机能读懂我们的语言,这个翻译本叫做字符编码表。

发展历史:

1、首先由美国人发明计算机并开发出了ASCII码表

2、当计算机逐渐在世界普及之后,各个国家都创建了各自的字符编码表:中国的GBK等

3、当各个国家交流的时候,会因为各自使用的字符编码表不同,出现乱码的情况,所有开发了unicode万国码,兼容所有国家语言字符,起步就是两个字节来表示字符 。并在后期的优化中发展了其他版本如果utf系列:utf8 utf16 ...。专门用于优化unocide存储问题,英文还是采用一个字节,中文三个字节。通常我们使用的是utf8.

使用讲解:

编码及解码

我们可以在python中编码或是解码

编码:

字符串.encode(内部可以跟上你想使用的字符编码表名称来编码)

解码:

字符串.decode(这里的话需要使用跟编码相同的字符编码表,否则会报错)

python2和python3中的区别

由于python2开发的年代早于unicode万国码,所以python不能识别unicode万国码,因此我们需要在文件的顶端加上# encoding:utf8,并在字符串的前面加上一个u,python3中的默认字符编码是utf8.

python2默认的编码是ASCII
	1.文件头
    	# encoding:utf8
	2.字符串前面加u
    	u'你好啊'

五、作业


标签:jason,30,数据类型,元组,123,dict,user,print,hobby
From: https://www.cnblogs.com/zhihuanzzh/p/16745617.html

相关文章

  • 字典,元组,集合的内置方法
    今日内容字典的相关操作内置方法1.类型转换 关键字dict() 字典使用转换太麻烦了,所以一般不推荐使用,建议手动转2.字典必须掌握的操作#这是按k取值不推荐 u......
  • 基本数据类型内置方法(二)
    基本数据类型内置方法(二)字典相关操作类型转换dict()字典的转换一般不使用关键字,都是自己手动转字典必须要掌握的操作 user_dict={'username':'jason',......
  • 字典,元组,集合与字符编码
    字典,元组,集合内置方法字典内置法类型转换语法:dict()一般情况下不用dict转字典,主要是自己动手转字典。基本上不用print(dict(11))#整型报错print(dict(11.11)......
  • 数据类型的常用操作和内置方法-下
    数据类型的常用操作和内置方法下字典内置方法类型转换字典的类型转换要求苛刻,一般不会使用dict([['key1',1],['key2',2]])#只能转换多元素的类型,且每个元素中还......
  • 数据类型的内置方法及字符编码理论
    数据类型的内置方法及字符编码理论一、内置方法之字典相关操作1.类型转换dict()字典的转换一般不使用关键字,而是自己动手转2.字典必须掌握的操作user_dict={......
  • idea激活2022.9.30
    2022.9.30亲测有效地址:​​激活地址​​F5TRIB85C7-eyJsaWNlbnNlSWQiOiJGNVRSSUI4NUM3IiwibGljZW5zZWVOYW1lIjoiU2hhbmRvbmcgVW5pdmVyc2l0eSIsImFzc2lnbmVlTmFtZSI6ImFvIGxp......
  • postman 自动重定向地址问题, 301 Moved Permanently
    最近公司在对接一家英国的服务商接口地址为:https://XXX.app/API?testMode=1在对接这家公司的api接口的时候遇到了一点问题,甚是头疼,现在就把经历记录下来当我在调试......
  • 数据类型之内置方法2
    目录字典相关操作元祖相关操作集合相关操作字符编码理论字符编码实操字典相关操作元祖相关操作集合相关操作字符编码理论字符编码实操......
  • 20220930 英文单词
    10TipstoBeaBetterCo-Workerhttps://work.chron.com/10-tips-better-coworker-2715.html 1、inandofitself表示从事物的本身来看,不考虑其他方面。 2、Don......
  • 【C语言基础】C语言数据类型及数据对齐
    前言code#include<stdio.h>#include<stdlib.h>#defineSize5typedefstructTable{charlength;charsize;charss;intlen;}table;tabl......