首页 > 编程语言 >python基础:字典的内置方法、元组的内置方法、集合的内置方法、字符编码

python基础:字典的内置方法、元组的内置方法、集合的内置方法、字符编码

时间:2023-02-04 16:56:29浏览次数:41  
标签:内置 jason python 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方法

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']
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,python,123,dict,user,print,hobby,方法
From: https://www.cnblogs.com/wxlxl/p/17091873.html

相关文章