知识模块(10) 浩如烟海--字典
1.定义字典
2.字典的操作
2.1查找操作
2.2 增加(修改)操作
2.3 删除操作
附件代码:
炼 知识模块(10) 浩如烟海——字典
知识模块(10) 浩如烟海--字典
字典(dict)跟其他序列(列表/元组)格式有较大的差异,字典是用大括号{}定义,用键:值(key:value)存储数据。
可以把键(key) 当成索引,且键是唯一的!键必须是字符串、数字或元组。值(value)可以存任意类型的数据。
空字典
dic = {}
print(type(dic))
dict() 字典函数:
格式:dict({key1:value1, key2:value2, key3:value3})
d = dict({"数":5 ,"列表":list(range(1,10)) , "元组":(1,1.5,"人")})
print(d)
可以发现:1.键与值是用":"冒号分割的;2.每个键值对都要以","逗号隔开。
foods = {"汉堡":15, "鸡腿":8, "可乐":3,"烧仙草":8, "薯条":8}
print(foods["鸡腿"]) # 输出值,没有索引会报错
print(foods.get("香辣鸡腿")) # 没有索引不会报错 None
# 获取所有索引: 字典名.keys()
print(foods.keys())
# 获取所有值: 字典名.values()
print(foods.values())
# 获取所有(索引:值) 字典名.items()
print(foods.items())
循环遍历获取键值
for i in foods.items(): # foods.values()
print(i)
for i in foods: # 直接遍历字典时,输出的是它的键值
print(i)
foods["糖水"] = 4 # 当没有键,就增加。
print(foods.items())
foods["糖水"] = 10 # 当有键,就修改。
print(foods.items())
格式:字典1.update(字典2)
取出字典2的键值对,键值对在字典1没有就添加进入;存在则修改原来的值。
foo = {"汉堡":"15元", "鸡翅":6}
foods.update(foo) # 没有键就增加,有就更新值
print(foods.items())
del 字典[键] --删除一个键值对
字典.pop(键) --删除键值对默认返回删除的值
字典.clear() --清空字典
del foods["汉堡"]
print(foods.items())
foods.pop("可乐")
print(foods.items())
foods.clear()
print(foods.items())
题1:利用字典键:值的特点,制作一个电话号码查询系统。
1、提示输入查询人的姓名
2、信息存在,打印出姓名,电话号码;
3、如果信息不存在,提示录入姓名,号码
4、循环重新查询
题2:实现统计字符串中的单词和单词出现的次数:
(1)统计的语句为:to be or not to be that is a question
(2)要求统计该句中出现的所有单词和其出现次数。
(3)使用字典进行输出,格式如下(排列顺序可不一致,但统计的次数要正确)。
{'to': 2, 'be': 2, 'or': 1, 'not': 1, 'is': 1, 'a': 1, 'question': 1, 'that': 1}
# 字典定义与赋值
dic = {} #空字典
print(type(dic))
# dict({key1:value1, key2:value2, key3:value3})
d = dict({"数":5 ,"列表":list(range(1,10)) , "元组":(1,1.5,"人")})
print(d)#可以发现:1.键与值是用":"冒号分割的;2.每个键值对都要以","逗号隔开。#2.字典的操作
foods = {"汉堡":15, "鸡腿":8, "可乐":3,"烧仙草":8, "薯条":8}'''2.1查找操作
字典名[索引] ---输出值,没有索引会报错
字典名.get(索引) ---没有索引不会报错 None
字典名.keys() ---获取所有索引
字典名.values() ---获取所有值
字典名.items() ---获取所有(索引:值)'''print(foods["鸡腿"]) # 输出值,没有索引会报错
print(foods.get("香辣鸡腿")) # 没有索引不会报错 None
# 获取所有索引: 字典名.keys()
print(foods.keys())
# 获取所有值: 字典名.values()
print(foods.values())
# 获取所有(索引:值) 字典名.items()
print(foods.items())# 循环遍历获取键值
for i in foods.items():print(i)
for i in foods: # 直接遍历字典时,输出的是它的键值print(i)#2.2 增加(修改)操作
foods["糖水"] = 4 # 当没有键,就增加。
print(foods.items())
foods["糖水"] = 10 # 当有键,就修改。
print(foods.items())#格式:字典1.update(字典2)
#取出字典2的键值对,键值对在字典1没有就添加进入;存在则修改原来的值。foo = {"汉堡":"15元", "鸡翅":6}
foods.update(foo) # 没有键就增加,有就更新值
print(foods.items())#2.3删除操作
#del 字典[键] --删除一个键值对
#字典.pop(键) --删除键值对默认返回删除的值
#字典.clear() --清空字典
del foods["汉堡"]
print(foods.items())
foods.pop("可乐")
print(foods.items())
foods.clear()
print(foods.items())'''题1:利用字典键:值的特点,制作一个电话号码查询系统。
1、提示输入查询人的姓名
2、信息存在,打印出姓名,电话号码;
3、如果信息不存在,提示录入姓名,号码
4、循环重新查询'''tel = {"张三":"1345611235","李四":"1356974001"}
while True:name = input("输入姓名: ")if name in tel:print(name,tel.get(name))elif name=="#":breakelse:phone = input("电话号码:")tel[name] = phone
print(tel.items())'''题2:实现统计字符串中的单词和单词出现的次数:
(1)统计的语句为:to be or not to be that is a question
(2)要求统计该句中出现的所有单词和其出现次数。
(3)使用字典进行输出'''
string = "to be or not to be that is a question" #定义变量存储字符串
lis=string.split(" ") #使用分割函数将字符串转为列表
count={} #定义一个空字典
for x in lis: #遍历列表if x not in count: #判断列表元素是否在字典中count[x]=1else:count[x]+=1
print(count) #打印字典
1.执行下列代码,输出的结果是?( )
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
dic.pop('b')
del dic['d']
dic['d'] = 4
print(dic)
A.{'a': 1, 'b': 2, 'c': 3,'d':4} B.{'a': 1, 'c': 3, 'd': 4}
C.{'a': 1, 'c': 3} D.{'d': 4}
2.下列代码的运行结果是?( )
a={'xm':'zhangsan'}
b={'sg':175,'tz':'55kg'}
b.update(a)
len(b)
A.2 B.3 C.4 D.6
3.以下关于字典特性的描述正确的是?( )
A.字典支持位置索引
B.字典里面的值(不是键)可以包含列表和其他数据类型
C.字典是一种有序的对象集合
D.字典中的数据可以进行切片
4.在某学校,张三、李四、王五三名同学对应的学号分别是100、101、102。现将他们学号与姓名对应的关系存入字典id_name中,关于以下代码段的描述,错误的是?( )
id_name = {101: '张三', 102: '李四', 103: '王五'}
name_id = {}
name_id[id_name[101]] = 101
name_id[id_name[102]] = 102
name_id[id_name[103]] = 103
print(id_name == name_id)
A.在字典id_name中,只能通过学号查找对应的姓名,不能通过姓名查找对应的学号。
B.上述代码是将id_name中姓名作为键、学号作为值构建了一个新的字典name_id。
C.上述代码执行后,字典name_id为:{'张三': 101, '李四': 102, '王五': 103}。
D.上述代码输出的结果为:True。
5.对于字典infor = {"name":"tom", "age":13, "sex":"male"},删除"age":13键值对的操作正确的是?( )
A.del infor['age'] B.del infor["age":13]
C.del infor D.infor.clear()
6.已知字典score={"语文":95,"数学":93,"英语":97}, 则执行print(score["语文"]+score["数学"]//2),输出的结果为?( )
A.141 B.141.5 C.94 D.94.0
7.下列程序运行的结果是?( )
infor = {"name":"tom", "age":13, "sex":"male"}
print(len(infor))
A.6 B.3 C.4 D.1
8.执行下列代码后,运行结果是?( )
seq=['hello','good','morning']
s='*'.join(seq)
print(s)
A、hello*good*morning* B、*hello*good*morning
C、hello*good*morning D、*hello*good*morning*
9.以下语句不正确的是?( )
A、dict={1:'a'} B、a={'name':'bob'}
C、e={[1]:'篮球'} D、c={'school':'精英小学'}
10. d1={'学科':'语文','班级':'2班','最高分':99}
d2={'学科':'数学','班级':'2班','最高分':100}
d1.update(d2)
print(d1)
以上代码的运行结果为?( )
A. {'学科':'语文','班级':'2班','最高分':99}
B. {'学科':'语文','班级':'2班','最高分':100}
C. {'学科':'数学','班级':'2班','最高分':100}
D. {'学科':'数学','班级':'2班','最高分':99}
11.若dic_color={'red':'红色','green':'绿色','gold':'金色','brown':'棕色','purple':'紫色'},
以下选项中能够输出'金色'的是?( )
A. print(dic_color['gold']) B. print(dic_color['金色'])
C. print(dic_color[2]) D. print(dic_color.values[2])
12.下面代码的输出结果是?( )
a={'sx':90,'yuwen':93,'yingyu':88,'kexue':98}
print(a['sx'])
A.93 B.90 C.88 D.98
13.下列不属于Python中处理字典的方法是?( )
A. pop() B.replace() C.get() D.popitem()
下一篇:路由查找原理