一、字典
字典表示方式dict:{key:value,key1:value1,key2:value2}
字典的key不能重复,如果有重复的key,前面的会被覆盖
字典的key是唯一的且不可变的数据(int float tuple boolen str)除此以外,其他的类型都不支持做key(列表,字典不能作为key,因为它们是可变的)
字典的value:任何数据类型都支持。
如:my_songs = {"favor":"晴天","hated":"月亮之上","nigth":"雪"}
1)通过key键取值
my_songs = {"favor":"晴天","hated":"月亮之上","nigth":"雪"} print(my_songs["favor"]) # 晴天
2)字典的长度
my_songs = {"favor":"晴天","hated":"月亮之上","nigth":"雪"} print(len(my_songs)) # 3
3)字典的索引
字典没有索引和切片,print(my_song[0])----->报错KeyError
有索引就代表有顺序,列表是有序的,字典是无序的
4)删除
my_songs = {"favor":"晴天","hated":"月亮之上","nigth":"雪"} my_songs.pop("favor") print(my_songs) # {'hated': '月亮之上', 'nigth': '雪'}
注意:不能使用remove
5)修改、添加
如果key不在原来的字典中,就在最后添加key:value
如在存在key,就是修改key的值
my_songs = {"favor":"晴天","hated":"月亮之上","nigth":"雪"} my_songs["hated"] = "十年" print(my_songs) # {'favor': '晴天', 'hated': '十年', 'nigth': '雪'} my_songs["like"] = "鬼迷心窍" print(my_songs) # {'favor': '晴天', 'hated': '十年', 'nigth': '雪', 'like': '鬼迷心窍'}
my_songs = {"favor":"晴天","hated":"月亮之上","nigth":"雪"} print(my_songs.keys()) # dict_keys(['favor', 'hated', 'nigth']) 取所有的key print(my_songs.values()) # dict_values(['晴天', '月亮之上', '雪']) 取所有的values print(my_songs.items()) # dict_items([('favor', '晴天'), ('hated', '月亮之上'), ('nigth', '雪')])
二、元组
列表的表示( ),类型:tuple
names=("yuz","nobody")
空元组names = ()
1)一个元素的元组
names = ("zjx") print(len(names)) # 3 print(type(names)) # str names = ("zjx",) print(len(names)) # 1 print(type(names)) # tuple
注意:一个元素的元组,一定要在元素后加加逗号,如果不加逗号,数据类型是这个元素的数据类型
2)元组是不可以修改的类型
可以利用切片方式,实现元组的连接
#在'Emma'和'Dinal'之间插入'Lili' tuple4 = ('polo','Emma','Dinal','Jones') tuple4 = tuple4[:2] + ('Lili',) + tuple4[2:] print(tuple4) # ('polo', 'Emma', 'Lili', 'Dinal', 'Jones')
3)元组是有序的,可以通过索引操作
tuple_1 = ('zjx','learn','python') print(tuple_1[2]) # python
4)元组的解包/拆包
a,b,c = ('zjx','java','python') print(a) # zjx print(b) # java print(c) # python
注意:赋值号= 前面的变量a,b,c的个数与元组的元素个数一定要相同,否则会报错
5)其他操作同字符串
- 重复操作符*(8 *(8,))
- 逻辑操作符 and or
- 成员关系操作符 in, not in
- 拼接操作符+(拼接操作符两边的元素类型要一致)
- 关系操作符(>, >=,<,<=)
6)什么时候用元组
- 不可以修改的情况下用元组
- 元组的性能要强于列表
- 一般情况使用列表即可
三、集合
集合的表示{} ,类型:set
和字典相比,是没有key的
my_set = {"zjx","jira","jemter"} print(my_set) # {"zjx","jira","jemter"} print(len(my_set)) # 3 print(type(my_set)) #set
1)无序的,不能使用索引和切片,不可修改某一元素
2)可变-添加、删除、····(在pycharm中可通过set.查看可使用的函数)
3)主要作用:为了去除重复元素
my_set = {"java","zjx","python","zjx"} print(my_set) # {'java', 'zjx', 'python'}
4)面试题:去除重复数据
思路:先转换成集合,再换成列表
my_list =["java","zjx","lucy","java","python","zjx","java"] print(list(set(my_set)) # ['yuz', 'zjx', 'python', 'lucy']
四、总结
无序:不能通过索引和切片获取数据(字典、集合)
有序:能通过索引和切片获取数据(元组、列表)
可变:可修改、添加、删除(字典、列表、集合)
不可变:不可修改、添加、删除(元组)
元组:有序不可变
字典:无序可变
列表:有序可变
集合:无序可变