您的位置:首页 > 编程语言 > Python开发

python基础刻意练习--Task 6 字典与集合

2019-10-27 14:06 609 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Jupiker/article/details/102766388

Day 8

一、字典

  • 字典是另一种可变容器模型,且可存储任意类型对象。
  • 字典的每个键值
    key=>value
    对用冒号
    :
    分割,每个对之间用逗号
    ,
    分割,整个字典包括在花括号
    {}
    中 ,格式如下所示:
diction = {key1 : value1, key2 : value2 }
  • 键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
  • 下面列举一个简单的字典实例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
# 或者
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }
1)访问字典里的值
  • 访问字典中的值,我们需要把相应的键放入到方括号中,如下实例:
dict = {'Name': 'Tim', 'Age': 12, 'Class': 'No.1'}

print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
'''
输出:
dict['Name']:  Tim
dict['Age']:  12
'''
  • 如果用字典里没有的键访问数据,会输出错误。
2)修改字典
  • 向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
dict = {'Name': 'Jim', 'Age': 12, 'Class': 'No.1'}

dict['Age'] = 17
3ff7
# 更新 Age
dict['School'] = "高级中学"     # 添加信息

print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
'''
dict['Age']:  17
dict['School']:  高级中学
'''
3)删除字典的元素
  • 能删单一的元素也能清空字典,清空只需一项操作。显示删除一个字典用del命令,如下实例:
dict = {'Name': 'Tim', 'Age': 12, 'Class': 'No.1'}

del dict['Name']   # 删除键 'Name'
dict.clear()       # 清空字典
del dict           # 删除字典

print ("dict['Age']: ", dict['Age'])
  • 运行完后该词典将不复存在,所以最后输出会有错误。
4)字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。以下两个重要的点需要记住:

  • 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
dict = {'Name': 'Tim', 'Age': 12, 'Name': 'Bob'}

print ("dict['Name']: ", dict['Name'])
#  dict['Name']:  Bob
  • 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:
dict = {['Name']: 'Runoob', 'Age': 7}

print ("dict['Name']: ", dict['Name'])
# 输出会出现错误!
5)字典内置函数和方法
  • 字典包含了以下内置函数:
  • 字典包含了以下内置方法:

二、集合

  • 集合(
    set
    )是一个无序的不重复元素序列。
  • 可以使用大括号
    { }
    或者
    set()
    函数创建集合,注意:创建一个空集合必须用
    set()
    而不是
    { }
    ,因为
    { }
    是用来创建一个空字典。
  • 其创建格式为:
parame = {value01,value02,...}
或者
set(value)
1)创建一个集合:
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket)  # {'banana', 'apple', 'pear', 'orange'}
  • 使用
    set(value)
    工厂函数,把列表或元组转换成集合:
a = set('abracadabra')
print(a)
# {'r', 'b', 'd', 'c', 'a'}

b = set(("Google", "Lsgogroup", "Taobao", "Taobao"))
print(b)
# {'Taobao', 'Lsgogroup', 'Google'}

c = set(["Google", "Lsgogroup", "Taobao", "Google"])
print(c)
# {'Taobao', 'Lsgogroup', 'Google'}
  • 两个集合之间也可以进行运算:
a = set('abracadabra')
b = set('alacazam')
print(a)      # {'a', 'r', 'b', 'c', 'd'}
print(a - b)  # {'r', 'd', 'b'}                            # 集合a中包含而集合b中不包含的元素
print(a | b)  # {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}   # 集合a或b中包含的所有元素
print(a & b)  # {'a', 'c'}                                 # 集合a和b中都包含了的元素
print(a ^ b)  # {'r', 'd', 'b', 'm', 'z', 'l'}             # 不同时包含于a和b的元素
2)访问集合中的值
  • 可以使用
    for
    把集合中的数据一个个读取出来。
thisset = set(['Google', 'Baidu', 'Taobao'])
for item in thisset:
print(item)

# Baidu
# Google
# Taobao
  • 也可以通过
    in
    not in
    判断一个元素是否在集合中已经存在。
thisset = set(['Google', 'Baidu', 'Taobao'])
print('Taobao' in thisset)        # True
print('Facebook' not in thisset)  # True
3)集合的内置方法
内置方法 方法描述
set.add(elmnt)
用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
set.remove(item)
用于移除集合中的指定元素。
set.update(set)
用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
set.intersection(set1, set2 …)
用于返回两个或更多集合中都包含的元素,即交集。
set.union(set1, set2…)
返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次。
set.difference(set)
返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中。
set.issubset(set)
用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False。
set.issuperset(set)
用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False。
  • 下面列举一些例子:
fruits = {"apple", "banana", "cherry"}
fruits.add("orange")        # 添加元素
print(fruits)
# {'orange', 'cherry', 'banana', 'apple'}

fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")     # 移除元素
print(fruits)  # {'apple', 'cherry'}

x = {"apple", "banana", "cherry"}
y = {"google", "baidu", "apple"}
x.update(y)                # 修改元素
print(x)
# {'cherry', 'banana', 'apple', 'google', 'baidu'}

a = set('abracadabra')
b = set('alacazam')
print(a)  # {'r', 'a', 'c', 'b', 'd'}
print(b)  # {'c', 'a', 'l', 'm', 'z'}
# 交集
print(a & b)  # {'c', 'a'}
c = a.intersection(b)
print(c)  # {'a', 'c'}
# 并集
print(a | b)  # {'l', 'd', 'm', 'b', 'a', 'r', 'z', 'c'}
c = a.union(b)
print(c)  # {'c', 'a', 'd', 'm', 'r', 'b', 'z', 'l'}
# 差集
print(a - b)  # {'d', 'b', 'r'}
c = a.difference(b)
print(c)  # {'b', 'd', 'r'}

x = {"a", "b", "c"}
y = {"f", "e", "d", "c", "b", "a"}
z = x.issubset(y)
print(z)  # True
x = {"a", "b", "c"}
y = {"f", "e", "d", "c", "b"}
z = x.issubset(y)
print(z)  # False

x = {"f", "e", "d", "c", "b", "a"}
y = {"a", "b", "c"}
z = x.issuperset(y)
print(z)  # True
x = {"f", "e", "d", "c", "b"}
y = {"a", "b", "c"}
z = x.issuperset(y)
print(z)  # False
4)不可变集合
  • frozenset([iterable])
    会返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。例如:
s = frozenset('basketball')
print(s)
# frozenset({'s', 'k', 't', 'e', 'l', 'a', 'b'})

备注:

学习参考资料:
https://www.runoob.com/python3/python3-set.html
https://mp.weixin.qq.com/s?__biz=MzIyNDA1NjA1NQ==&mid=2651011465&idx=1&sn=2f4a24746ed6c6d42e04f2434bcd27b4&chksm=f3e35e11c494d7072fbb215f2ca548801338306f65d9ab78723c2ff02290484b0b983a2879c7&mpshare=1&scene=1&srcid=&sharer_sharetime=1572129397658&sharer_shareid=8c49d4226c319addceef298b781f6bb7&key=f0572ec07140f16088698c0ef9ed666bd510f1eb2e674d5e00b33d1ef29a7c86056b92736f977e9dae2bd5b939807d99ec77a9cee4e42beb6e266ec66ae7c9112c52ff8115b96fe6c820da78b2dddcd0&ascene=1&uin=MTgxNzI3MTY0MQ%3D%3D&devicetype=Windows+10&version=62060841&lang=zh_CN&pass_ticket=CTTViZgHQX3FG9pptB%2FT82I3eIlTTl%2FR8oxPUQqTT2Bp2DW3cDe7M5%2Ff05feFRLl

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: