赞
踩
字典的定义
字典: 符号为{} , (Dictionary)
1.字典:一种可变容器,且可存储任意类型对象,可以装列表,变量,字符串,浮点数等。。。,如其他容器模型。可以理解为C++中的map,但是比map强大
字典由键和对应值成对组成。每个键与值用冒号隔开(:),每对用逗号分割,整体放在花括号中({})。
注意:1. Python的字典是一对一的形式,key:value,可以理解key是下标,value是内容
标准形式:{a:b},那么a就相当于下标,value就相当于内容。
2.下标是唯一的,即key赋值的时候不可以重复,不可用变量去赋值他,因为列表是可变的,所有也不能用列表去赋值
3.字典的存储没有顺序,我们凭借key值去取value的内容
简单例子:
s = {}
print(s,type(s))
字典 key-value 键值对
s = {
'linux':[100,99,80],
'python':[89,90,100]
}
print(s,type(s))
工厂函数
d = dict()
print(d,type(d))
d = dict(a=1,b=2)
print(d,type(d))
打印出想要的value值,例如value值中的第一个元素
dict = {
'a' : [1,2,3],
'b' : [4,5,6],
'c' : [7,8,9]
}
for k,v in dict.items():
print(k,v)
print(k,v[0]) ##value值中的第一个元素
字典的嵌套
student = {
123:{
'name':'hedan',
'age':21,
'score':90
},
456:{
'name':'yibo',
'age':21,
'score':99
}
}
print(student)
print(student[123])
print(student[456]['age'])
字典的特性.
字典不支持切片
d = {
'1':'a',
'2':'b'
}
print(d['1']) ##打印出‘1’对应的value值
成员操作符
print('1' in d)
print('1' not in d)
for循环 针对key
for key in d:
print(key)
遍历字典
for key in d:
print(key,d[key])
for 循环,指定字典中的value值的索引
dict = {
'a':[1,2,3],
'b':[4,5,6],
'c':[7,8,9]
}
for k,v in dict.items(): ##dict.items,k,v的时候,后面必须加itmes
print(k,v)
print(k,v[0]) ##value的第一个元素
字典元素的增加
update:
如果key值存在,则更新对应的value值
如果key值不存在,则添加对应的值
service = {
'http':80,
'ftp':23,
'ssh':22
}
service['https'] = 443
service['ftp'] = 21
print(service)
service_backup ={
'tomcat':8080,
'mysql':3306
}
service.update(service_backup) ##添加字典到字典中
service.update(dns=53) ##添加dns
service.update(ftp=21) ##更新已有的ftp
print(service)
setdefault:
如果key值存在,不做修改
如果key值不存在,则添加对应的值
service = {
'http':80,
'ftp':23,
'ssh':22
}
service.setdefault('http',9090)
service.setdefault('oracle',44575)
print(service)
字典元素的删除
pop:删除指定key对应的value值
service = {
'http':80,
'ftp':23,
'ssh':22,
}
item = service.pop('http')
print(item)
print(service)
删除最后一个key-value
a = service.popitem()
print(a)
print(service)
清空字典内容
service.clear()
print(service)
字典元素的查看
service = {
'http':80,
'ftp':23,
'ssh':22
}
print(service.keys()) ##查看字典中所有的key值
print(service.values()) ##查看字典中所有的value值
print(service.items()) ##查看字典中的key-value
print(service.get('https',443)) ##对应的value值
练习
【1】数字重复统计:
1). 随机生成1000个整数;
2). 数字的范围[20, 100],
3). 升序输出所有不同的数字及其每个数字重复的次数;
内容:
import random
all_num = []
for i in range(1000):
all_num.append(random.randint(20,100))
sorted_num = sorted(all_num) ##对生成好的1000个数进行排序,然后添加到字典中
num_dict ={}
for num in sorted_num:
if num in num_dict:
num_dict[num] += 1 ##出现的次数
else:
num_dict[num] = 1
print(num_dict)
【2】统计重复的单词:
此处认为单词之间以空格为分隔符, 并且不包含,和.;
# 1. 用户输入一句英文句子;
# 2. 打印出每个单词及其重复的次数;
word = input('输入一个句子:')
word_dict = {}
w = word.split() # 1.把每个单词分割处理
for i in w:
if i in word_dict:
word_dict[i] +=1
else:
word_dict[i] = 1
print(word_dict)
【3】 随机生成100个卡号;
# 1. 卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100), # 2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat"; # 3. 输出卡号和密码信息, 格式如下: 卡号 密码 6102009001 000000 知识: print({}.fromkeys({'a','b','c'},'123')) {}里面的是key值,123为对应的value值 card_ids = [] for i in range(100): # 身成100个卡号 s = '6102009%.3d' % (i + 1) # %.3d:代表整数占位 card_ids.append(s) card_dict={} card_ids_dict = {}.fromkeys(card_ids,'redhat') print('卡号 \t\t\t\t 密码') for key in card_ids_dict: print('%s\t\t\t%s' %(key,card_ids_dict[key]))
作业:
1.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字 2.题目:判断101-200之间有多少个素数,并输出所有素数 3.题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5%; 40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的部分,可提成1.5%; 高于100万元时,超过100万元的部分按1%提成; 从键盘输入当月利润I,求应发放奖金总数? 4. 累加和类型程序: 1). 求f=1+2+...+9【很简单的问题】 2). 求f=1-2+3-4+...+9【在(一)的基础上,学习如何一正一负地累加】 3). 求f=1-1/2+1/3-1/4+...+1/9【在(二)的基础上,被加数成了自然数的倒数】 4). 求f=1!-2!+3!-4!+...+9!【在(二)的基础上,被加数成了自然数的阶乘】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。