6.1字典
字典和列表类似,也是可变序列,不过与列表不同,它是无序的可变序列,保存的内容是以“键-值对”的形式存放的。
字典的主要特征如下:
通过键而不是通过索引来读取
字典是任意对象的无序集合
字典是可变的,并且可以任意嵌套
字典中的键必须唯一
字典中的键必须不可变
6.1.1字典的创建和删除
定义字典时,每个元素都包含两个部分——“键”和“值”,并且在“键”和“值”之间使用冒号分隔,相邻两个元素使用逗号分隔,所有元素放在一个大括号“{}”中。
dictionary={‘key1’:‘value1’,‘key2’:‘value2’,‘key3’:‘value3’,‘key4’:‘value4’}
dictionary:表示字典名称;
key:表示元素的键;
value:表示元素的值。
dictionary={'姓名':'TOM','年龄':'22','性别':'男','爱好':'足球'}
print(dictionary)
D:\python\python.exe E:/python/字典与集合/6.1.1字典的创建和删除.py
{'姓名': 'TOM', '年龄': '22', '性别': '男', '爱好': '足球'}
空字典:
dictionary={}
dictionary=dict()
1.通过映射函数创建字典
dictionary=dict(zip(list1,list2))
dictionary:表示字典名称;
zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。如果想得到元组,可以将zip对象使用tuple()函数装换为元组;如果想得到列表,则可以使用list()函数将其装换为列表。
list1:表示一个列表,用于指定要生成字典的键。
list2:表示一个列表,用于指定要生成字典的值。
name=['小明','小智','小李','小花']
sign=['水瓶座','金牛座','双子座','白羊座']
dictionary=dict(zip(name,sign))
print(dictionary)
D:\python\python.exe E:/python/字典与集合/6.1.1通过映射函数创建字典.py
{'小明': '水瓶座', '小智': '金牛座', '小李': '双子座', '小花': '白羊座'}
2.通过给定的“键-值对”创建字典
dictionary=dict(key1=value1,key2=value2,key3=value3,...,keyn=valuen)
dictionary:表示字典名称;
key:表示元素的键;
value:表示元素的值。
dictionary=dict(小明='水瓶座',小智='金牛座',小李='双子座',小花='白羊座')
print(dictionary)
D:\python\python.exe E:/python/字典与集合/6.1.1通过给定的“键-值对”创建字典.py
{'小明': '水瓶座', '小智': '金牛座', '小李': '双子座', '小花': '白羊座'}
使用dict对象的fromkeys()方法创建键值为空的字典,
dictionary=dict.fromkeys(list1)
dictionary:表示字典名称;
list1:作为字典的键的列表。
name=['小明','小智','小李','小花']
dictionary=dict.fromkeys(name)
print(dictionary)
D:\python\python.exe E:/python/字典与集合/6.1.1fromkeys()方法.py
{'小明': None, '小智': None, '小李': None, '小花': None}
通过已经存在的元组和列表创建字典。
list=['狮子座','处女座','白羊座','金牛座']
tuple=('小明','小智','小花','小小')
#dictionary1={list:tuple} #列表不能作为字典的键
dictionary2={tuple:list}
print(dictionary2)
#print(dictionary1)
D:\python\python.exe E:/python/字典与集合/6.1.1使用已经存在的元组和列表创建字典.py
{('小明', '小智', '小花', '小小'): ['狮子座', '处女座', '白羊座', '金牛座']}
删除字典:
del dictionary
清楚字典的元素:
dictionary.clear()
6.1.2访问字典
print(dictionary)
通过键输出对应的值:
print(dictionary[‘键’])
print(dictionary[‘键’] if ‘键’ in dictionary else ‘不存在此键’)
dictionary.get(key[,default])
dictionary为字典对象,既要从中获取值得字典;key为指定的键;default为可选项,用于当指定的键不存在时,返回一个默认值,如果省略,则返回None。
name=('小明','小智','小李','小花')
sign=['水瓶座','金牛座','双子座','白羊座']
person=dict(zip(name,sign))
sign=['白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座','魔蝎座','水瓶座','双鱼座']
nature=['是一个火属性星座,白羊座的人最大的特点就是比较热情活泼,是一个慢热的一个人,是那种“活在套子”里的人,但是他们也是一个喜欢把自己装扮的特别完美的人。',
'是一个风属性星座,双子座的人非常喜欢跟风,然后很喜欢自由,也比较花心,对外面的事物都很好奇,但是他们的占有欲非常强,他们的脑洞也非常的大。',
'是一个水属性星座,巨蟹座的人有这很强的毅力,并且他们比较喜欢跟不顺风的事情或者人死磕到底,这就是他们为什么有着顽强的毅力的原因,他们最大的特点就是为人比较忠诚。',
'是一个火属性星座,狮子座的人的野心普遍比较大,他们有着鸿鹄之志的远大志向,并且他们很要强,他们有着不同寻常的领导能力,是一个很强的领导者。',
'是一个土属性星座,处女座的人比较注意完美,他们的洁癖心理也很重要,他们通常很爱干净,所以做事也简洁大方,他们遇事不会将就。',
'是一个风属性星座,天秤座经常追求平等与和谐,善于观察和观察,有很强的沟通技巧。因此,天秤座有很多真正的朋友,因为你足够真诚,但最大的缺点是你总是犹豫不决。',
'是一个风属性星座,天蝎座精力充沛,占有欲强,有自己的人生目标。如果你没有达到你的目标,誓不罢休,你会有一种强烈的报复心理。心怀怨恨会让你报复伤害过你的任何人。',
'是一个火属性星座,射手座提倡自由、勇气、果断和独立。他有勇气勇往直前。不管有多难,他想做多久就做多久。你的毅力和自信是无与伦比的。',
'是一个土属性星座,摩羯座是十二星座中最耐心、谨慎和善良的星座。他们脚踏实地,工作固执己见。直到他们达到目标,他们才会放手。',
'是一个风属性星座,水瓶座的人非常聪明。他们最大的特点是创新,追求独特的生活和强烈的个人主义。他们对人友好,注重隐私。',
'是一个水属性星座,双鱼座是十二宫中的最后一个星座。它综合了所有星座的优点和缺点。同时,它也受到水牌情感的影响,这给水牌原本复杂的性格增添了更复杂的元素。']
sign_dict=dict(zip(sign,nature))
name_index=input()
if name_index in name:
person_index=person[name_index]
print("小明的星座是",person_index)
print('性格:',sign_dict[person_index])
else:
print(name_index+"不存在")
D:\python\python.exe E:/python/字典与集合/6.1.2星座练习.py
小明
小明的星座是 水瓶座
性格: 是一个水属性星座,双鱼座是十二宫中的最后一个星座。它综合了所有星座的优点和缺点。同时,它也受到水牌情感的影响,这给水牌原本复杂的性格增添了更复杂的元素。
6.1.3遍历字典
dictionary.items()
dictionary=dict(小明='水瓶座',小智='金牛座',小李='双子座',小花='白羊座')
for item in dictionary.items():
print(item)
dictionary1={'姓名':'TOM','年龄':'22','性别':'男','爱好':'足球'}
for i,j in dictionary1.items():
print(i,j)
D:\python\python.exe E:/python/字典与集合/6.1.3遍历字典.py
('小明', '水瓶座')
('小智', '金牛座')
('小李', '双子座')
('小花', '白羊座')
姓名 TOM
年龄 22
性别 男
爱好 足球
6.1.4添加、修改和删除字典元素
dictionary[key]=value
当添加的键存在,相当于修改该键对应的值。
del dictionary[key]
dictionary=dict(小明='水瓶座',小智='金牛座',小李='双子座',小花='白羊座')
dictionary['小山']='天蝎座'
print(dictionary)
dictionary['小李']='天蝎座'
print(dictionary)
del dictionary['小智']
print(dictionary)
D:\python\python.exe E:/python/字典与集合/6.1.4添加修改删除字典元素.py
{'小明': '水瓶座', '小智': '金牛座', '小李': '双子座', '小花': '白羊座', '小山': '天蝎座'}
{'小明': '水瓶座', '小智': '金牛座', '小李': '天蝎座', '小花': '白羊座', '小山': '天蝎座'}
{'小明': '水瓶座', '小李': '天蝎座', '小花': '白羊座', '小山': '天蝎座'}
6.1.5字典推导式
import random
dictionary={i:random.randint(0,100) for i in range(1,5)}
print(dictionary)
name=('小明','小智','小李','小花')
sign=['水瓶','金牛','双子','白羊']
dictionary1={i:j+"座" for i,j in zip(name,sign)}
print(dictionary1)
D:\python\python.exe E:/python/字典与集合/6.1.5字典推导式.py
{1: 83, 2: 61, 3: 26, 4: 17}
{'小明': '水瓶座', '小智': '金牛座', '小李': '双子座', '小花': '白羊座'}
6.2集合
可变集合(set)和不可变集合(frozenset)
6.2.1创建集合
1.直接使用“{}”创建
setname={element 1,element 2,element 3,element 4}
setname表示集合的名称,element表示集合的元素。
2.使用set()函数创建
setname=set(iteration)
setname:表示集合名称;
iteration:表示要装换为集合的可迭代对象,可以是列表、元组、range对象等。也可以是字符串
setname1={'小明','小智','小李','小花'}
tuple1=('小明','小智','小李','小花',2,3,55,2)
setname2=set(tuple1)
print(setname1)
print(setname2)
D:\python\python.exe E:/python/字典与集合/6.2.1创建集合.py
{'小李', '小智', '小明', '小花'}
{'小智', 2, 3, '小花', '小李', '小明', 55}
6.2.2向集合中添加和删除元素
集合是可变序列
1.向集合中添加元素
setname.add(element)
2.从集合中删除元素
setname.remove(element) 删除指定元素
setname.pop(element) 删除一个元素
setname.clear(element) 清空集合
6.2.3集合的交集、并集和差集运算
set1 & set2
set1 | set2
set1 - set2