python创建一个空集合的语句_python学习第四篇 字典 集合

字典

一.定义:

字典是一种可变的容器,可以存储任意类型的数据

字典中的每个数据都是用‘键(key)’进行索引的,而不像序列(str,list,tuple)可以用整数进行索引

字典的存储是无序的

字典中的数据以键(key)-值(value)对形式进行存储

字典的键不能重复,且只能用不可变类型做为字典的键

二.创建字典的字面值方式

字典的表示方式以{}括起来,以冒号(:)分隔键值对,各个键值对之间使用逗号分隔开

创建空的字典

d = {}

创建字典的构造函数dict

dict()       #生成一个空的字典等同于{}

dict(iterable)          #通过可迭代对象创建一个字典

dict(**kwargs)        #关键字传参的形式生成一个字典

注:字典的键必须为不可变类型的值

可变的类型:list(列表),dict(字典),set(集合)

三.字典的基本操作

1.字典的键索引

语法:

字典[键]

作用:

用来获取字典键所对应的值

2.字典添加和修改字典的元素

语法:

字典[键]=值

说明:

键不存在时,创建键,并让键绑定对应的值

键存在时,修改键绑定的值

3.删除字典的元素

del 语句

语法:

del    字典[键]

4.字典的键判断in,not in 运算符

可以用in 运算符判断一个键是否存在于字典中,如果存在返回True, 如果不存在返回False   not in与之相反

练习:

写程序实现以下需求:

键如下数据形成一个字典seasons

键                   值

1 ========>‘春季有1,2,3月’

2 ========>‘夏季有4,5,6月’

3 ========>‘秋季有7,8,9月’

4 ========>‘冬季有10,11,12月’

让用户输入一个整数代表这个季节,打印这个季节对应的信息,如果用户输入的信息不存在于字典内,则提示用户信息不存在

1 d={1:'春季有1,2,3月',2 2:'夏季有4,5,6月',3 3:'秋季有7,8,9月',4 4:'冬季有10,11,12月'}5 print(d)6 n=int(input("请输入一个整数"))7 if n ind:8 print(d[n])9 else:10 print("用户信息不存在")

四.字典的迭代访问

l=input('请输入一段字符串')

d={}

forn inl:

ifn not ind:

d[n]=1

else:

d[n]+=1

fork ind:

print(k,':',d[k],'次')

练习:

输入一段字符串,打印出这个字符串中出过的字符以及出现过的次数

如:

输入:abcdabcdaba

打印如下:

a:4次

b:3次

c:2次

d:2次

注:不强调打印顺序

1 l=input('请输入一段字符串')2 d={}3 for n inl:4 if n not ind:5 d[n]=1

6 else:7 d[n]+=1

8 for k ind:9 print(k,':',d[k],'次')

五.可以用于字典的函数

Len(x)    max(x)    min(x)    any(x)

六.字典的内置方法

1.dict.clear()

删除字典中所有的元素

这个方法没有参数没有返回值

2.dict.fromkeys(seq[,value])

创建一个新的字典,以序列seq中的元素作为字典的键,value为字典所有键对应的初始值

参数:

seq – 字典键值列表

value – 可选参数,社会键序列(seq)的值

返回值:

该方法返回一个新的字典

3.dict.get(key,default = None)

返回指定键的值,如果值不在字典中返回默认值None

参数:

Key-字典中要查找的键

Default-如果指定键的值不存在时,返回该默认值返回值

返回值:

返回指定键的值,如果值本在字典中返回默认值None

4.dict.items()

以列表返回可迭代的(键,值)元组

没有参数

返回值:

返回可遍历的(键,值)元组数据

5.dict. keys  ()

以列表返回一个字典所有的键

没有参数返回值:

返回一个字典的键

6、dict. update (dict2)

把字典dict2的键/值对更新到dict里

参数:

dict2  添加到指定字典dict里的字典

返回值:

该方法没有任何返回值

7.dict. values ()

以列表返回字典中的所有的值

没有参数

返回值:

返回字典中所有的值。

8.pop (key. [, default])

删除字典给定键key所对应的值,返回值为被删除的值。key值必须给出。否则,返回default值

参数:

key:要删除的键值

default:如果没有key,返回default值。

返回值:

返回值被删除的值。

9、popitem()

随机返回并删除宇典中的对键和值

没有参数

返回值:

返回一个键值对(key, value)形式

七.字典与列表比较

都是可变的容器

索引方式不同,列表用整数索引,字典用键索引

列表的存储是有序的,字典的存储是无序的

字典的插入,删除,修改的速度快于列表(重点)

练习:

任意输入很多学生的姓名,年龄,成绩,每个学生的信息存入到字典中,然后再放在列表内每个学生的信息需要手动输入:

如:

请输入姓名:tarena

请输入年龄:15

请输入成绩:99

请输入姓名:china

请输入年龄:70

请输入成绩:98

请输入姓名:#结束输入

内部存储格式如下:

Infors = [{“name”:”tarena”,”age”:15,”score”:99},{name”:”china”,”age”:70,”score”:98}]

打印以上的列表

按如下表格打印学生信息

姓名

年龄

成绩

Tarena

15

99

China

70

98

1 infors=[]2 whileTrue:3 d ={}4 na=input("请输入姓名:")5 if notna:6 break

7 d["name"]=na8 ag=input("请输入年龄:")9 d["age"]=ag10 sc=input("请输入成绩:")11 #d = dict.fromkeys(na,sc)

12 d["score"]=sc13 infors.append(d)14 j=1

15 k=016 while j<=len(infors)+3:17 if j==1:18 print("+-------+-------+-------+")19 elif j==2:20 print("| 姓名 | 年龄 | 成绩 |")21 elif j

25 elif j==len(infors)+3:26 print("+-------+-------+-------+")27 j+=1

28 #print(infors)

29 #print("+---------------+----------+----------+")

30 #print("| 姓名 | 年龄 | 成绩 |")

31 #print("+---------------+----------+----------+")

32 #for d in infors:

33 #n = d['name'].center(15)

34 #a = str(d['age']).center(10)

35 #s = str(d['score']).center(10)

36 #print("|%s|%s|%s|" % (n, a, s))

37 #print("+---------------+----------+----------+")

打印名片管理系统:

要求:

添加一个新的名片

删除一个名片

修改一个名片

查询一个名片

显示所有名片

退出系统

提示:card_infors = [{‘name’:’xx’,’qq’:xxx,’weixin’:xxx,’addr’:’xxx’},

{‘name’:’xx’,’qq’:xxx,’weixin’:xxx,’addr’:’xxx’}

]

1 print("\t\t打印名片系统")2 l=[]3 hd="+---------------+----------+----------+----------+"

4 zh="| 姓名 | QQ | 微信 | 地址 |"

5 a=06 tt="jkl"

7 while a<=6:8 k =09 d ={}10 a = int(input("1.添加 2.删除 3.修改 4.查询 5.显示所有 6.保存信息 7.退出"))11 if a == 1:12 na=input("名字:")13 qq=input("QQ:")14 wx=input("weixin")15 ad=input("addr:")16 d['name']=na17 d['qq']=qq18 d['weixin']=wx19 d['addr']=ad20 l.append(d)21 elif a==2:22 while k==0:23 i =024 an = input("请输入要删除的名字(可输入jkl返回)")25 if an==tt:26 k=1

27 else:28 for dl inl:29 if an == dl['name']:30 l.pop(i)31 print("删除成功")32 k = 1

33 else:34 i += 1

35 if k ==0:36 print("输入错误名字")37 elif a==3:38 while k==0:39 i =040 d ={}41 an = input("请输入要修改的名字(可输入jkl返回)")42 if an==tt:43 k=1

44 else:45 for dl inl:46 if an == dl['name']:47 na = input("修改后名字:")48 qq = input("修改后QQ:")49 wx = input("修改后weixin")50 ad = input("修改后addr:")51 d['name'] =na52 d['qq'] =qq53 d['weixin'] =wx54 d['addr'] =ad55 l[i] =d56 print(hd)57 print(zh)58 print(hd)59 an = l[i]['name'].center(15)60 pp = l[i]['qq'].center(10)61 xw = l[i]['weixin'].center(10)62 da = l[i]['addr'].center(10)63 print("|%s|%s|%s|%s|" %(an, pp, xw, da))64 print(hd)65 k = 1

66 else:67 i += 1

68 if k ==0:69 print("输入错误名字")70 elif a==4:71 while k==0:72 i =073 a = int(input("请输入要查询的序号(可输入-1退出)"))74 if a==-1:75 k=1

76 else:77 if a <= len(l) + 1:78 print(hd)79 print(zh)80 print(hd)81 dl = l[a - 1]82 an = dl['name'].center(15)83 pp = dl['qq'].center(10)84 xw = dl['weixin'].center(10)85 da = dl['addr'].center(10)86 print("|%s|%s|%s|%s|" %(an, pp, xw, da))87 print(hd)88 k = 1

89 else:90 print("请输入小于%d的正整数序号", len(l) + 1)91 elif a==5:92 print(hd)93 print(zh)94 print(hd)95 for dl inl:96 an = dl['name'].center(15)97 pp = dl['qq'].center(10)98 xw = dl['weixin'].center(10)99 da = dl['addr'].center(10)100 print("|%s|%s|%s|%s|" %(an, pp, xw, da))101 print(hd)102 #print(l)

103 elif a==6:104 f = open('./mingpian.txt', 'w', encoding='utf-8')105 for dl inl:106 an = dl['name'].center(15)107 pp = dl['qq'].center(10)108 xw = dl['weixin'].center(10)109 da = dl['addr'].center(10)110 x=an+pp+xw+da111 print(x)112 f.write(x)113 f.close()114 elif a==7:115 break

116 else:117 print("输入错误,退出")118 break

集合

集合是可变的序列容器

集合内的数据对象都是唯一的(不能重复多次的)

集合是无序的存储结构,集合中的数据没有先后顺序关系

集合内的元素必须是不可变对象

集合是可迭代对象

集合是相当于只有键没有值的字典

创建集合的构造函数

Set() 创建一个空集合对象(不能用{}来创建空集合)

Set(iterable)   用可迭代对象来创建新的集合对象

注:

非空集合用{}括起来,内部的各个元素用(,)分隔开

创建非空集合

集合的添加与删除操作

添加:

add方法:把要传入的元素做为一个整个添加到集合中

updata方法:是把要传入的元素拆分,作为个体传入到集合中删除

remove 删除集合中要删除的元素

集合中的查看

集合也是可迭代对象可以用for循环遍历查看其中的元素

集合的运算:

交集&            生成两个集合的交集

并集|             生成两个集合的并集

补集-             生成两个集合的补集

对称补集^      生成两个集合的对称补集

子集

超集>            判断一个集合是另一个集合的超集

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值