文章目录
字典
字典的特性和常见操作
字典是Python语言中唯一的映射类型
key(键)-value(值)结构,key必须为不可变数据类型,必须唯一,字典无序,通过key查找value。列表是通过索引查找的。
字典创建的关键字是dict.
字典的常见操作:
1、查找,dic.keys()、dic.values、dic[‘key’] 、dic.items和dic.get(‘key’)
dic.keys():返回字典里所有Key的列表
dic.values():返回字典里所有value的列表
dic[‘key’] :返回‘key’对应的value值,不存在报错
dic.items:返回字典里所有key,value元祖的列表字典项在列表中的排列顺序不确定。
dic.get(’key’):返回‘key’对应的value值,不存在返回None,不报错
可指定“默认”值,这样将返回你指定的值而不是None。
2、新增:赋值新增:dic[‘key’] = 'value和dic.setdefault
dic[‘key’] = 'value
‘key’若存在,把值改成‘value’,不存在则创建
dic.setdefault(’key’)
'key’若存在,返回对应值,不存在则创建
指定的键不存在时,setdefault返回指定的值并相应地更新字典。如果指定的键存在,就返回其值,并保持字典不变。与get一样,值是可选的;如果没有指定,默认为None。
d = {'name':'xiaoming'}
d.setdefault('address',[]).append('hubei')
print(d)
# {'name': 'xiaoming', 'address': ['hubei']}
3、删除pop() 、del、clear()、popitem()
dic.pop(‘key’,None) ,第二个参数表示找不到‘key’返回None.
pop()会返回删除的值
clear删除所有的字典项,就地执行的(就像list.sort一样),什么都不返回(或者说返回None)
popitem随机地删除并返回一个字典项,元祖形式
4、字典合并,update
dic1.update(dic2),更改dic1,与dic2合并元素,有则覆盖,无则创建
5、循环
1、for k in dic.keys
2、for k,v in dic.items
3、for key in dic
6、format_map方法映射取值
7、fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None
集合
集合的特性和常见操作
确定性,互异性、无序性
创建关键词:set
集合的常见操作:
1、交集:intersection:&
2、并集:union: |
3、差集:difference: -
4、对称差集:symmetric difference
5、判断是否相等 == !=
6、判断是否在集合内:in not in
7、判断是否不想交:isdisjoint() 是不是包含issuperset():>=,是不是被包含issubset():<=
8、单个元素增加:add,多个元素增加,比如序列:update
se = {1, 2, 3}
se.add('hello')
print(se)
{1, 2, 3, 'hello'}
se.update('hello')
print(se)
{1, 2, 3, 'h', 'o', 'l', 'e'}
se.update([1, 3, 5, 6, 7, 8])#列表
print(se)
{1, 2, 3, 5, 6, 7, 8} #互异性
se.update((1, 2, 3, 9, 10, 'hello'))#元祖也可以,新增过后就不是元祖了
print(se)
{1, 2, 3, 9, 10, 'hello'}
se.add((1, 2, 3, 9, 10, 'hello'))
print(se)
{1, 2, 3, (1, 2, 3, 9, 10, 'hello')}#add添加作为单个元素,保留原数据格式
se.update({3:'hello'},{'we':'family'})
print(se)
{'we', 1, 2, 3} #字典只添加 Keys
9、删除:dic.discard(),不报错和dic.remove()异常报错,pop()随机删除,集合为空集合时报错,clear()清空。
字符串,字典,列表,元祖,集合的转换:
字符串、列表、元祖、字典、集合 创建关键字:str、list、tuple、dict、set
1、列表和元祖互换比较简单,元祖可看成不可更改的有序列表
字符串有序,转换成列表会拆分,
s = '12333'
l3= list(s)
print(l3)`
['1', '2', '3', '3', '3']
2、列表,字典,元祖,集合转字符串直接str一下,可以用eval()再转换成原数据类型,如果列表里元素都是字符串可以join拼接一下:
l = [1, 2, 3, 'hello']
s1 = str(l)
print(s1)
print(type(s1))
[1, 2, 3, 'hello']
<class 'str'>
s = ('xiaoming',123)
s1 = str(s)
print(s1)
print(type(s1))
('xiaoming', 123)
<class 'str'>
s2 = eval(s1)
print(s2)
print(type(s2))
('xiaoming', 123)
<class 'tuple'>
3、列表转集合会去除相同元素,字符串转集合会去除相同字母,字典转集合,转列表只转Key:
l = [1, 2, 3, 1, 1, 2]
s = set(l)
print(s)
{1, 2, 3}
s = 'hello'
print(set(s))
{'h', 'o', 'e', 'l'}
s = {123: 'we',124:'are'}
print(set(s))
{123, 124}
4、zip函数两个列表转字典,元素不一致时以元素少的为准。
l1 = [123,'we']
l2 = [234,'are']
print(dict(zip(l1,l2)))
{123: 234, 'we': 'are'}
print(dict(zip(l2,l1)))
{234: 123, 'are': 'we'}
l1 = [123,'we']
l2 = [234,'are','family']
print(dict(zip(l1,l2)))
{123: 234, 'we': 'are'}
print(dict(zip(l2,l1)))
{234: 123, 'are': 'we'}