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

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)        #<class '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} <class 'set'>
print(li, type(li)) # [0, 1, 2, 3, 4, 5]  <class 'list'>
print(tu, type(tu)) # (0, 1, 2, 3, 4, 5) <class 'tuple'>

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。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python编程语言中,有四种常用的集合数据类型,它们分别是列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。列表是一种有序和可更改的集合,允许重复的成员。元组是一种有序且不可更改的集合,也允许重复的成员。字典是一个无序、可变且有索引的集合,其中没有重复的成员。而集合是一种无序和无索引的集合,没有重复的成员。这四种集合数据类型在Python中都有着不同的特点和用途。 在Python中,列表、元组和字符串都属于序列,它们的元素都可以通过编号进行访问。而字典则属于映射,其中的元素是以键值对的形式存在的。集合则不属于序列或映射中的任何一种,它是一种独立的数据类型,用于存储一组不重复的元素。 总结起来,Python中的列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)都是常用的集合数据类型,它们各自有着不同的特点和用途。列表是有序和可更改的集合,元组是有序且不可更改的集合字典是无序、可变且有索引的集合集合是无序和无索引的集合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [浅谈python四种集合数据类型—【列表、元组、集合字典】](https://blog.csdn.net/QWERTYzxw/article/details/121479048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python 元组、集合字典](https://download.csdn.net/download/weixin_38603219/13752298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值