Python学习 Task5:字典、集合和序列

Task5:字典、集合和序列

  • 1、字典
    • 1.1 访问字典
    • 1.2 修改字典
    • 1.3 删除字典元素
    • 1.4 字典的内置函数
    • 1.5 字典的内置方法
  • 2 集合
    • 2.1 创建和访问集合
    • 2.2 集合的内置方法
    • 2.3 集合的转换
    • 2.4 不可变集合
  • 3 序列

1、字典

序列是以连续的整数为索引,而字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型。字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。dict 内部存放的顺序和 key 放入的顺序是没有关系的。dict 查找和插入的速度极快,不会随着 key 的增加而增加,但是需要占用大量的内存。

dict = {'a': 1, 'b': 2, 'b': '3'}
print(dict['b'])# 3
print(dict) # {'a': 1, 'b': '3'}

1.1 访问字典

dict = {'Name': 'Xiaoming', 'Age': 10, 'Class': 'First'}
print("dict['Name']:",dict['Name'])
print("dict['Age']:",dict['Age'])

1.2 修改字典

dic = dict()# 创建一个空的字典
dic['a'] = 1
dic['b'] = 2
dic['c'] = 9
print(dic)# {'a': 1, 'b': 2, 'c': 9}
dic['a'] = 2020
print(dic)# {'a': 2020, 'b': 2, 'c': 3}
dic['d'] = 725
print(dic)# {'a': 2020, 'b': 2, 'c': 3, 'd': 725}

1.3 删除字典元素

能删单一的元素,也能清空字典,清空只需一项操作。使用del命令删除一个字典。

dict = {'Name': 'Xiaoming', 'Age': 10, 'Class': 'First'}
del dict['Name']  # 删除键是'Name'的条目
print(dict)        #{'Age': 10, 'Class': 'First'}
dict.clear()      # 清空字典所有条目
print(dict)       #{}
del dict          # 删除字典
print(dict)        #

1.4 字典的内置函数

函数 描述
cmp(dict1, dict2) 比较两个字典元素。
len(dict) 统计字典元素个数,即键的总数。
str(dict) 输出字典可打印的字符串表示。
type(variable) 返回输入的变量类型,如果变量是字典则返回字典类型。

1.5 字典的内置方法

方法 描述
dict.clear() 删除字典内所有元素
dict.copy() 返回一个字典的浅复制
dict.fromkeys(seq[, val]) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
dict.has_key(key) 如果键在字典dict里返回true,否则返回false
dict.items() 以列表返回可遍历的(键, 值) 元组数组
dict.keys() 列表返回一个字典所有的键
dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
dict.update(dict2) 把字典dict2的键/值对更新到dict里
dict.values() 以列表返回字典中的所有值
pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
popitem() 返回并删除字典中的最后一对键和值。

2 集合

Python 中 set 与 dict 类似,也是一组 key 的集合,但不存储 value 。由于 key 不能重复,所以,在 set 中,没有重复的 key 。注意, key 为不可变类型,即可哈希的值。

2.1 创建和访问集合

先创建对象再加入元素, 在创建空集合的时候只能使用 s = set() ,因为 s = {} 创建的是空字典

basket = set()
basket.add('fruit')
basket.add('apple')
basket.add('banana')
print("basket:",basket) #basket: {'fruit', 'banana', 'apple'}

basket = {'fruit','apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # {'pear', 'banana', 'orange', 'fruit', 'apple'}

使用 set(value) 工厂函数,把列表或元组转换成集合。

a = set('ploytechnic')
print(a) # {'r', 'b', 'd', 'c', 'a'}
b = set(("Google", "baidu", "bing", "baidu"))
print(b) # {'Taobao', 'Lsgogroup', 'Google'}

使用 len() 內建函数得到集合的大小。

basket = {'fruit','apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(len(basket)) #5

使用 for 把集合中的元素一个个读取出来。

basket = {'fruit','apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
for item in basket:
   print("item:",item)
#item: fruit
#item: apple
#item: orange
#item: banana
#item: pear

使用 in 或 not in 判断一个元素是否在集合中已经存在。

basket = {'fruit','apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print('fruit' in basket) # True
print('rice' not in basket) # True

2.2 集合的内置方法

函数 描述
set.add(elmnt) 用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
set.update(set) 用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
set.remove(item) 用于移除集合中的指定元素。如果元素不存在,则会发生错误。
set.discard(value) 用于移除指定的集合元素。 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。
set.pop() 用于随机移除一个元素。
set.intersection(set1, set2 …) 返回两个集合的交集。
set1 & set2 返回两个集合的交集。
set.intersection_update(set1, set2 …) 交集,在原始的集合上移除不重叠的元素。
set.union(set1, set2…) 返回两个集合的并集。
set.difference(set) 返回集合的差集。
set.difference_update(set) 集合的差集,直接在原来的集合中移除元素,没有返回值
set.symmetric_difference(set) 返回集合的异或。
set.symmetric_difference_update(set) 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
set.issubset(set) 判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False。
set1 <= set2 判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False。
set.issuperset(set) 用于判断集合是不是包含其他集合,如果是则返回 True,否则返回 False。
set1 >= set2 判断集合是不是包含其他集合,如果是则返回 True,否则返回 False。
set.isdisjoint(set) 用于判断两个集合是不是不相交,如果是返回 True,否则返回 False。

2.3 集合的转换

se = set(range(6))
li = list(se)
tu = tuple(se)
print(se, type(se)) # {0, 1, 2, 3, 4, 5} 
print(li, type(li)) # [0, 1, 2, 3, 4, 5]  
print(tu, type(tu)) # (0, 1, 2, 3, 4, 5) 

2.4 不可变集合

Python 提供了不能改变元素的集合的实现版本,即不能增加或删除元素,类型名叫 frozenset 。需要注意: frozenset 仍然可以进行集合操作,只是不能用带有 update 的方法。 frozenset([iterable]) 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

a = frozenset(range(8)) # 生成一个新的不可变集合
print(a) # frozenset({0, 1, 2, 3, 4, 5, 6, 7})
b = frozenset('pharmacy')
print(b) # frozenset({'y', 'r', 'a', 'p', 'c', 'h', 'm'})

3 序列

序列(Sequence)是Python的一种内置类型(built-in type),内置类型就是构建在Python Interpreter里面的类型,三种基本的Sequence Type是list(表),tuple(定值表,或翻译为元组),range(范围)。可以看作是Python Interpreter定义了这样三个class,字符串也是一种序列。

函数 描述
list(sub) 将一个可迭代对象转换为列表
tuple(sub) 将一个可迭代对象转换为元组。
str(obj) 将obj对象转换为字符串
max(sub) 返回序列或者参数集合中的最大值
min(sub) 返回序列或参数集合中的最小值
sum(iterable[, start=0]) 返回序列 iterable 与可选参数 start 的总和。
sorted(iterable, key=None, reverse=False) 对所有可迭代的对象进行排序操作。 a. iterable – 可迭代对象。b. key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。c. reverse – 排序规则, reverse = True 降序 , reverse = False 升序(默认)。d. 返回重新排序的列表。
reversed(seq) 函数返回一个反转的迭代器。seq – 要转换的序列,可以是 tuple, string, list 或 range。

你可能感兴趣的:(python基础)