Python-字典

字典的定义

“”"
字典是一个无序的数据集合
通常输出顺序和定义顺序不一样
字典有key值和value值{‘key’:‘value’}
“”"

users = ['user1','user2']
passwds = ['123','456']
print(list(zip(users,passwds)))
print(dict(zip(users,passwds)))

在这里插入图片描述

字典 key-value 键值对

注意:字典中的value可以是任意数据类型。
s = {
    'linux':[100,99,80],
    'python':[89,90,100]

}
print(s,type(s))


###定义一个空字典###

s = {}
print(s,type(s))

在这里插入图片描述

工厂函数

d = dict()  ##定义一个空字典
print(d,type(d))

d = dict(a=1,b=2)
print(d,type(d))

在这里插入图片描述

字典的嵌套

student = {
    123:{
        "name":'tom',
        'age':18,
        'score':99

    },        ##注意有逗号
    456:{
        'name':'lily',
        'age':19,
        'score':98


    }

}

print(student[123]['score'])  ##输出对应的value值

在这里插入图片描述
在这里插入图片描述
##所有key的value值一样##

print({}.fromkeys({'1','2'},'xiaozhan'))

在这里插入图片描述

字典的特性

d = {
    '1':'a',
    '2':'b'

}

print(d['1'])

在这里插入图片描述

字典不支持(索引)切片

print(d[0])

在这里插入图片描述

成员操作符

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

在这里插入图片描述

for循环 针对key

for key in d:
    print(key)

在这里插入图片描述

遍历字典,循环key值和索引

for key in d:
    print(key,d[key])

在这里插入图片描述

字典元素的增加

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

# 增加一个元素
# 如果key值存在,则更新对应的value值
# 如果key值不存在,则添加对应的值

service['https'] = 443
print(service)  ##添加key-value值
service['ftp'] = 21
print(service)  ##更新value值

在这里插入图片描述
##添加多个key-value值

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

service.update(service_backup)  ##在service中添加service_backup
print(service)
service.update(dns=53)   ##也可以直接使用upadate添加一对key-value
print(service)

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

service.setdefault('http',9090)    ##注意格式,不可以用=
print(service)
service.setdefault('oracle',44575)
print(service)

在这里插入图片描述

字典元素的删除

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

# pop删除指定key对应的value值

# item = service.pop('https')
# print(item)
# print(service)

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

a = service.popitem()
print(a)
print(service)

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

service.clear()
print(service)

在这里插入图片描述

字典元素的查看

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

# 查看字典中所有的key值

print(service.keys())

# 查看字典中所有的value值

print(service.values())

# 查看字典中的key-value

print(service.items())

“”"
在这里插入图片描述

查看指定key的value值
key不存在,默认返回None
key不存在,有default,则返回default
get方法获取指定key对应的value值
如果key存在,返回对应的value值
如果不存在,默认返回None,如果需要指定返回值,传值即可。



print(service.get('https',443))  ##如果https不存在,则返回443
print(service['https'])  ##报错

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

字典练习01

“”"

数字重复统计:

1). 随机生成1000个整数;
2). 数字的范围[20, 100],
3). 升序输出所有不同的数字及其每个数字重复的次数;

“”"
import random
all_num = []

for item in range(1000):
    all_num.append(random.randint(20,100))  ##生成1000个数

# 对生成好的1000个数进行排序,然后添加到字典中
sorted_num = sorted(all_num)

num_dict ={} ##定义空字典

for num in sorted_num:   ##遍历排序好的列表
    if num in num_dict:   ##如果key值存在,则对应的value自加1
        num_dict[num] += 1

    else:   ##如果key值不存在,则添加对应的key-value值,且value为1
        num_dict[num] = 1

print(num_dict)  ##输出字典

在这里插入图片描述

字典练习02

“”"
重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
# 1. 用户输入一句英文句子;
# 2. 打印出每个单词及其重复的次数;
“”"

s = input(‘s:’)

# 1.把每个单词分割处理
s_li = s.split() ##以空格为分隔符进行分割

"""
s = input('s:')   ##输入一个句子
s_li = s.split()
print(s_li)
结果:
s:hello hong hong 
['hello', 'hong', 'hong']
"""
word_dict ={}

for item in s_li:   ##循环遍历
    if item not in word_dict:  ##如果不在字典中,添加新的key-value值
        word_dict[item] = 1
    else:
        word_dict[item] += 1
print(word_dict)

在这里插入图片描述
在这里插入图片描述

练习

“”"
# 1. 随机生成100个卡号;
# 卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100),
# 2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";
# 3. 输出卡号和密码信息, 格式如下:
卡号 密码
6102009001 000000
“”"

# print({}.fromkeys({'1','2'},'100000'))  ##多个key的value值相同。

在这里插入图片描述

card_ids = []

# 身成100个卡号
for i in range(100):
    # %.3d:代表整数占位
    s = '6102009%.3d' %(i+1)
    card_ids.append(s)

card_ids_dict = {}.fromkeys(card_ids,'redhat')
print(card_ids_dict)
print('卡号\t\t\t\t\t密码')
for key in card_ids_dict:  ##更改格式,默认循环key值
    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!【在(二)的基础上,被加数成了自然数的阶乘】
"""

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值