Python-字典

字典的定义

字典:  符号为{} ,  (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!【在(二)的基础上,被加数成了自然数的阶乘】
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值