当前位置:   article > 正文

Python-字典_字典用什么符合

字典用什么符合

字典的定义

字典:  符号为{} ,  (Dictionary) 
1.字典:一种可变容器,且可存储任意类型对象,可以装列表,变量,字符串,浮点数等。。。,如其他容器模型。可以理解为C++中的map,但是比map强大 
  字典由键和对应值成对组成。每个键与值用冒号隔开(:),每对用逗号分割,整体放在花括号中({})。  
注意:1. Python的字典是一对一的形式,key:value,可以理解key是下标,value是内容
标准形式:{a:b},那么a就相当于下标,value就相当于内容。
2.下标是唯一的,即key赋值的时候不可以重复,不可用变量去赋值他,因为列表是可变的,所有也不能用列表去赋值
3.字典的存储没有顺序,我们凭借key值去取value的内容
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

简单例子:

s = {}
print(s,type(s))
  • 1
  • 2

在这里插入图片描述
字典 key-value 键值对

s = {
    'linux':[100,99,80],
    'python':[89,90,100] 
}
print(s,type(s))
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
工厂函数

d = dict()
print(d,type(d))

d = dict(a=1,b=2)
print(d,type(d))
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

打印出想要的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值中的第一个元素
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
字典的嵌套

student = {
    123:{
      'name':'hedan',
      'age':21,
      'score':90
    },
     456:{
      'name':'yibo',
      'age':21,
      'score':99
    }
 }
print(student)
print(student[123])
print(student[456]['age']) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述
在这里插入图片描述
字典的特性.
字典不支持切片

d = {
   '1':'a',
   '2':'b' 
} 
print(d['1'])  ##打印出‘1’对应的value值
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

成员操作符

print('1' in d)
print('1' not in d)
  • 1
  • 2

在这里插入图片描述
for循环 针对key

for key in d:
   print(key)
  • 1
  • 2

在这里插入图片描述
遍历字典

for key in d:
    print(key,d[key])
  • 1
  • 2

在这里插入图片描述
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的第一个元素
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

字典元素的增加

update:
如果key值存在,则更新对应的value值
如果key值不存在,则添加对应的值

service = {
    'http':80,
    'ftp':23,
    'ssh':22
}  

 service['https'] = 443 
 service['ftp'] = 21
 print(service)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

service_backup ={
    'tomcat':8080,
    'mysql':3306
}

service.update(service_backup)  ##添加字典到字典中
service.update(dns=53)   ##添加dns
service.update(ftp=21)   ##更新已有的ftp
print(service) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
setdefault:
如果key值存在,不做修改
如果key值不存在,则添加对应的值

service = {
    'http':80,
    'ftp':23,
    'ssh':22
}
service.setdefault('http',9090)
service.setdefault('oracle',44575)
print(service)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
字典元素的删除
pop:删除指定key对应的value值

service = {
    'http':80,
    'ftp':23,
    'ssh':22,
} 
item = service.pop('http')
print(item)
print(service) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
删除最后一个key-value

a = service.popitem()
print(a)
print(service)
  • 1
  • 2
  • 3

在这里插入图片描述
清空字典内容

service.clear()
print(service)
  • 1
  • 2

在这里插入图片描述
字典元素的查看

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述
练习
【1】数字重复统计:

  1). 随机生成1000个整数;
  2). 数字的范围[20, 100],
  3). 升序输出所有不同的数字及其每个数字重复的次数;
  • 1
  • 2
  • 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述
【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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述
【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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述
在这里插入图片描述
作业:

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!【在(二)的基础上,被加数成了自然数的阶乘】
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/665739
推荐阅读
相关标签
  

闽ICP备14008679号