Python 字典与集合

   日期:2020-08-08     浏览:96    评论:0    
核心提示:作者:billy版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处字典字典的创建和删除访问字典遍历字典添加、修改和删除字典字典推导式集合创建集合向集合中添加和删除元素集合的交集、并集和差集运算...

作者:billy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

字典

字典(dictionary)和列表类似,也是可变序列,不过与列表不同,它是无序的可变序列。保存的内容以 “键-值对” 的形式存放。这类似于《新华字典》,他可以把拼音和汉字关联起来,通过音节表可以快速找到想要的汉字。其中,音节相当于键(key),而对应的汉字相当于值(value),键是唯一的,而值可以有多个。

Python 中的字典相当于 Java 或 C++ 中的 Map 对象

字典的特征:

  • 通过键来读取,而不是通过索引;
  • 字典是任意对象的无需集合;
  • 字典是可变的,并且可以任意嵌套;
  • 字典中的键必须唯一;
  • 字典中的键必须不可变;
  1. 字典的创建和删除
    定义字典时,每个元素都包含两个部分 - “键” 和 “值”,并且在 “键” 和 “值” 之间使用冒号分隔,相邻两个元素使用逗号分隔,所有元素在一个大括号 “{}” 中。语法格式如下:
    dictionary = {'key1':'value1', 'key2':'value2', ..., 'keyn':'valuen'}

和列表、元组一样,也可以创建空的字典:dictionary = {}

这里介绍一下 zip() 函数,其作用是将多个列表或元组对应位置的元素组合成为元组,并返回包含这些内容的 zip 对象。如果 list1 与 list2 长度不同,则取最短的列表的长度。

Python 中创建字典还可以使用 dict() 方法,可以通过已有数据快速创建字典。
示例:

name = ('绮梦', '冷伊一', '香凝', '黛兰')
sign = ['水瓶座', '射手座', '双鱼座', '双子座']
dictionary1 = dict( 绮梦 = '水瓶座', 冷伊一 = '射手座' )		# 通过给定 "键-值对" 创建字典
dictionary2 = dict( zip(name, sign) )				# 通过 zip 对象创建字典
dictionary3 = dict.fromkeys(name)				# 通过 fromkeys 创建值为空的字典
dictionary4 = {name: sign}					# 通过元组为键、列表为值创建字典
print(dictionary1)
print(dictionary2)
print(dictionary3)
print(dictionary4)

上述例子的运行结果为:

{'绮梦': '水瓶座', '冷伊一': '射手座'}
{'绮梦': '水瓶座', '冷伊一': '射手座', '香凝': '双鱼座', '黛兰': '双子座'}
{'绮梦': None, '冷伊一': None, '香凝': None, '黛兰': None}
{('绮梦', '冷伊一', '香凝', '黛兰'): ['水瓶座', '射手座', '双鱼座', '双子座']}

同列表和元组一样,不再需要的字典也可以使用 del 命令删除:del dictionary
如果只是想删除字典的所有元素,可以使用字典对象的 clear() 方法。执行 clear() 方法之后,原字典将变成空字典:dictionary.clear()

  1. 访问字典
    Python 中输出字典,可以直接使用 print() 函数。但是在使用字典时,很少直接输出它的内容,一般需要根据指定的键得到相应的结果。

示例:

name = ('绮梦', '冷伊一', '香凝', '黛兰')
sign = ['水瓶座', '射手座', '双鱼座', '双子座']
dictionary = dict( zip(name, sign) )
print(dictionary)
print(dictionary['香凝'])
print("我的星座是:", dictionary['大魔王'] if '大魔王' in dictionary else "字典里找不到我的星座")

上述例子的运行结果为:

{'绮梦': '水瓶座', '冷伊一': '射手座', '香凝': '双鱼座', '黛兰': '双子座'}
双鱼座
我的星座是: 字典里找不到我的星座

在实际开发中,很可能我们是不知道当前字典中存在什么键,如果指定的键不存在则会出现异常。为了避免异常,可以使用 if 语句对不存在的情况进行处理。

另外,Python 中推荐的方法是使用字典对象的 get() 方法获取指定键的值,语法如下:
dictionary.get(key[,default])
dictionary:字典对象;
key:指定的键;
default:可选项,用于当指定的键不存在时,返回一个默认值,如果省略则返回 None;

示例:

name = ('绮梦', '冷伊一', '香凝', '黛兰')
sign = ['水瓶座', '射手座', '双鱼座', '双子座']
dictionary = dict( zip(name, sign) )
print(dictionary)
print(dictionary.get('大魔王'))
print(dictionary.get('大魔王', '字典里没有大魔王'))

上述例子的运行结果为:

{'绮梦': '水瓶座', '冷伊一': '射手座', '香凝': '双鱼座', '黛兰': '双子座'}
None
字典里没有大魔王
  1. 遍历字典
    Python 中提供了 items() 方法来获取字典的 “键-值对” 列表,还有 keys() 方法获取 “键” 列表、values() 方法获取 “值” 列表。然后通过循环来遍历列表中的值。

示例:

dictionary = {'姓名':'billy', '年龄':'18', '爱好':'烫头'}
verse = dictionary.items()
print(verse)

for item in dictionary.keys():
    print(item, end=' ')
print('')

for item in dictionary.values():
    print(item, end=' ')
print('')

for key,value in dictionary.items():
    print(key, ":", value)

上述例子的运行结果为:

dict_items([('姓名', 'billy'), ('年龄', '18'), ('爱好', '烫头')])
姓名 年龄 爱好 
billy 18 烫头 
姓名 : billy
年龄 : 18
爱好 : 烫头
  1. 添加、修改和删除字典
    字典是可变序列,可以随时在其中添加 “键-值对”,语法如下:
    dictionary[key] = value
    由于在字典中,“键” 必须是唯一的,所以如果添加的新元素的 “键” 已经存在,那么它将不会添加新的元素,而是替换原来该 “键” 的值,这也相当于修改字典的元素。

示例:

dictionary = {'姓名':'billy', '年龄':'18', '爱好':'烫头'}
print(dictionary.items())

dictionary['体重'] = '75kg'
print(dictionary.items())

dictionary['体重'] = '80kg'
print(dictionary.items())

上述例子的运行结果为:

dict_items([('姓名', 'billy'), ('年龄', '18'), ('爱好', '烫头')])
dict_items([('姓名', 'billy'), ('年龄', '18'), ('爱好', '烫头'), ('体重', '75kg')])
dict_items([('姓名', 'billy'), ('年龄', '18'), ('爱好', '烫头'), ('体重', '80kg')])

当字典中的某个元素不需要时,可以使用 del 命令将其删除。需要注意的是,如果删除的 “键-值对” 不存在与字典中则会出现异常,所以在删除之前需要先判断其是否在字典中。

示例:

name = ('绮梦', '冷伊一', '香凝', '黛兰')
sign = ['水瓶座', '射手座', '双鱼座', '双子座']
dictionary = dict(zip(name, sign))

if '冷烟萧' in dictionary:
    del dictionary['冷烟萧']
print(dictionary)

if '冷伊一' in dictionary:
    del dictionary['冷伊一']
print(dictionary)

上述例子的运行结果为:

{'绮梦': '水瓶座', '冷伊一': '射手座', '香凝': '双鱼座', '黛兰': '双子座'}
{'绮梦': '水瓶座', '香凝': '双鱼座', '黛兰': '双子座'}
  1. 字典推导式
    使用字典推导式可以快速生成一个字典,它的表现形式和列表推导式类似。

示例1:

import random
dictionary = {i:random.randint(10, 100) for i in range(10)}
print("生成的字典为:", dictionary)

上述例子的运行结果为:生成的字典为: {0: 74, 1: 80, 2: 36, 3: 45, 4: 19, 5: 93, 6: 42, 7: 85, 8: 93, 9: 51}

示例2:

name = ('绮梦', '冷伊一', '香凝', '黛兰')
sign = ['水瓶', '射手', '双鱼', '双子']
dictionary = {i:j+'座' for i,j in zip(name, sign)}
print(dictionary)

上述例子的运行结果为:生成的字典为: {'绮梦': '水瓶座', '冷伊一': '射手座', '香凝': '双鱼座', '黛兰': '双子座'}

集合

Python 中的集合(set)与数学中的集合概念类似,也是用于保存不重复的元素。它有可变集合(set)和不可变集合(frozenset)两种。本章节介绍的 set 集合是无序可变的,另一种暂不做介绍。集合最好的应用就是去重,因为集合中的每个元素都是唯一的。

  1. 创建集合
    Python 中可以直接使用 “{}” 来创建集合,但需要注意的是,大括号中必须要有值,因为直接使用一对大括号 “{}” 在 Python 中表示的是创建一个空的字典。

示例:

set1 = {'绮梦', '冷伊一', '香凝', '黛兰'}
set2 = {1, 2, 3, 1, 2, 7, 5, 8, 6, 4, 8}
set3 = {'Python', 28, (5, 6, 7)}
print(set1)
print(set2)
print(set3)

上述例子的运行结果为:

{'绮梦', '冷伊一', '香凝', '黛兰'}
{1, 2, 3, 4, 5, 6, 7, 8}
{(5, 6, 7), 'Python', 28}

由于 Python 中 set 集合是无序的,所以输出时元素的排列顺序可能与上面不同,这个不必在意

除了直接使用大括号创建,还可以使用 set() 函数将列表、元组等其他可迭代对象转换为集合。
示例:

set1 = set("命运给与我们的不是失望之酒,而是机会之杯。")
set2 = set([1, 2, 3, 4, 5, 6])
set3 = set(("人生苦短", "我用 Python"))
print(set1)
print(set2)
print(set3)

上述例子的运行结果为:

{'会', '的', '机', '杯', '不', '失', '望', '。', ',', '而', '们', '我', '酒', '给', '是', '命', '之', '运', '与'}
{1, 2, 3, 4, 5, 6}
{'我用 Python', '人生苦短'}
  1. 向集合中添加和删除元素
    集合是可变的,所以在创建集合之后,还可以对其进行添加或删除操作。

向集合中添加元素可以使用 add() 方法实现。注意,要添加的元素,只能使用字符串、数字及布尔类型等,不能使用列表、元组等可迭代对象。
示例:

gather = set(["渔舟唱晚", "高山流水", "出水莲", "汉宫秋月", 28, 1.414, 'abc'])
print(gather)

gather.add("我是一直小小鸟")
print(gather)

上述例子的运行结果为:

{1.414, '渔舟唱晚', '高山流水', 'abc', '汉宫秋月', 28, '出水莲'}
{1.414, '渔舟唱晚', '高山流水', 'abc', '我是一直小小鸟', '汉宫秋月', 28, '出水莲'}

在 Python 中,可以使用 del 命令删除整个集合,也可以使用集合的 pop() 方法或者 remove() 方法删除一个元素,或者使用 clear() 方法清空集合,使其变成一个空的集合。
示例:

gather = set(["渔舟唱晚", "高山流水", "出水莲", "汉宫秋月", 28, 1.414, 'abc'])
print(gather)

gather.pop()
print(gather)

if 'abc' in gather:
    gather.remove('abc')
print(gather)

gather.clear()
print(gather)

上述例子的运行结果为:

{'高山流水', '汉宫秋月', 1.414, '渔舟唱晚', 'abc', 28, '出水莲'}
{'汉宫秋月', 1.414, '渔舟唱晚', 'abc', 28, '出水莲'}
{'汉宫秋月', 1.414, '渔舟唱晚', 28, '出水莲'}
set()
  1. 集合的交集、并集和差集运算
    集合最常用的操作就是进行交集、并集、差集和对称差集运算。进行交集运算时使用 “&” 符号;进行并集运算时使用 “|” 符号;进行差集运算时使用 “-” 符号;进行对称差集运算时使用 “^” 符号。

示例:

python = set(['绮梦', '冷伊一', '香凝', '盺轩'])
c = set(['冷伊一', '凌宇', '盺轩', '盛博'])
print("选择 Python 语言的学生有:", python)
print("选择 C 语言的学生有:", c)
print("交集运算:", python & c)
print("并集运算:", python | c)
print("差集运算:", python - c)

上述例子的运行结果为:

选择 Python 语言的学生有: {'香凝', '盺轩', '绮梦', '冷伊一'}
选择 C 语言的学生有: {'盺轩', '凌宇', '冷伊一', '盛博'}
交集运算: {'冷伊一', '盺轩'}
并集运算: {'香凝', '盛博', '绮梦', '冷伊一', '凌宇', '盺轩'}
差集运算: {'香凝', '绮梦'}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服