python数据结构(列表,元组,字典)
1. 列表
列表的创建,定义列表时使用" [] "表示,列表的长度可变,可以通过索引进行访问,可以嵌套其他的数据结构如:元组,字典
列表的常用方法:
添加:append()
插入:insert()
查找下标:index()
扩展:extend()
- 列表的删除
'''
明确知道列表位置时,使用del()方法
'''
lis = ['a', 'b', 'c', 'd']
del(lis[0])
del(lis) #删除整个列表
'''
不明确要删除的字符的位置时使用remove()方法
'''
lis.remove("a")
'''
删除列表最后一个元素
'''
lis.pop()
- 列表的排序
'''
列表的排序:使用sort(reverse=)方法
当reverse=Flase时进行升序
反之为降序
'''
lis = ['1', '2','3','4']
print(lis.sort(reverse=Flase))
# ['1', '2','3','4']
print(lis.sort(reverse=True))
# ['4','3','2','1']
2. 元组
元组这种的数据结构的特点和list类似,但是元组的长度是不可变的,一旦创建就无法改变
元组创建时使用“ () ”表示,也可以省略该括号
当只有一个值时一定需要使用()加“,”表示,要不然会解析成一个整数类型
其他的操作方法和列表是一样的
3. 字典
python中的字典和java的map集合是类似的,
都是key和value结构,字典的查询是非常快的
- 使用sorted()进行排序
#创建一个字典
d = {1:'a', 2:'b', 3:'c', 4:'d'}
#sorted(dict, key, reverse)
#按照key进行降序
sorted(d.items(), key=lambda item:item[0], reverse=False)
#按照value进行降序
sorted(d.items(), key=lambda item:item[1], reverse=True)
'''
注意:排序过后的字典是新的字典
'''
- 使用collection中OrderedDict()进行有序化
import from collection import OrderedDict
orderdict = OrderedDict()
#定义ordereddict之后添加字典时,就是有序的了
d = {1:'a', 2:'b', 3:'c', 4:'d'}
d[5] = "e"
d[6] = "f"
d[7] = "g"
#输出的结果会和添加时的顺序是一致的
'''
使用这个类的时候会有个弊端,
因为它内部维护着一个双向链表,在数据量大的时候,会很消耗内存
'''
字典的取值
获取字典的值时,习惯性的使用 dict[key] 这样方式
这样使用会存在一些弊端,比如 key 不存在的时候会抛出异常。所以我们一般提倡使用 dict.get(key) 方法进行获取字典的 value
,就算 key 不存在的时候,只会返回一个None,不会抛出异常。从字典中获取一部分值
'''
使用字典的推导式进行获取字典的子集
'''
d = {'a':1, 'b':2, 'c':3, 'd':4}
#获取值大于2的字典
newd = {s:i for s, i in d.items if i>2}
#{'c':3, 'd':4}
字典的翻转
字典的翻转就是把 key 和 value 进行位置的互转
d = {1:'a', 2:'b', 3:'c'}
new_d = ([(x,y) for y,x in d.items()])
print(new_d)
# {'a':1, 'b':2, 'c':3}
- 字典的更新
#如果已经定义好的字典,有了新的变动,我们使用update()方法进行更新
d = {1:'a', 2:'b'}
d1 = {3:'c',1:'d'}
d.update(d1)
print(d)
#{1:'d', 2:'b', 3:'c'}
- 查找两个字典相同的内容
#将两个字典中相同的内容找出来
d = {1:'a', 2:'b', 3:'c'}
d1 = {1:'a', 2:'b', 4:'d'}
new_d = set(d) & set(d1) #得到相同的内容
print(new_d)
#{(1,'a')(2,'b')}