五、python元组、字典、集合

一、字典

字典表示方式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': '鬼迷心窍'}
6)取值
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']

四、总结

无序:不能通过索引和切片获取数据(字典、集合)

有序:能通过索引和切片获取数据(元组、列表)

可变:可修改、添加、删除(字典、列表、集合)

不可变:不可修改、添加、删除(元组)

元组:有序不可变

字典:无序可变

列表:有序可变

集合:无序可变

原文地址:https://www.cnblogs.com/zhangjx2457/p/13609344.html