Python 字典

字典的定义

#字典是一个无序的数据集合,使用print输出字典的时候
#通常输出的顺序和定义的顺序是不一致的

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

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

#字典:key - value 键值对
#value可以是任意数据类型

# s = {
#     'linux':[100,99,88],
#     'westos':[190,564,645]
# }
#
# print(s,type(s))

#工厂函数
# d = dict()
# print(type(d))
#
# d1 = dict(a=1,b=2)
# print(d1,type(d1))

#字典的嵌套
students = {
    '03113009':{
        'name':'wsp',
        'age':18,
        'score':80
    },
    '03113010':{
        'name': 'laoli',
        'age': 30,
        'score': 59
    }
}

print(students['03113010']['name'])

#所有的key和value值是一样的
print({}.fromkeys({'1','2'},'000000'))

字典的特性

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

#字典不支持索引
# print(d[0])

#字典不支持切片
# print(d[:])

#字典的重复和连接无意义

#成员操作符
# print('1' in d)

#for循环,默认遍历字典的key值
for i in d:
    print(i)

#遍历字典
for i in d:
    print(i,d[i])

在这里插入图片描述

字典的增加

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}

#增加一个元素
#如果key值存在,则更新对应的value值
#如果key值不存在,则添加对应key-value
# services['mysql'] = 3306
# print(services)
#
# services['http'] = 443
# print(services)

#添加多个key-value值
services_backup = {
    'https':443,
    'tomcat':8080,
    'http':8080
}

# services.update(services_backup)
# print(services)
#
# services.update(flask=9000,http=8000)
# print(services)

#setdefault添加key值
#如果key值存在,不做修改
#如果key值不存在,添加对应的key-value

services.setdefault('http',9090)
print(services)

services.setdefault('

字典的删除

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}

# del services['http']
# print(services)

#pop删除指定key的key-value
#如果key存在,删除,并返回删除key对应的value
#如果不存在,报错

# item = services.pop('http')
# print(item)
# print(services)

#popitem删除最后一个key-value值
# item = services.popitem()
# print('删除的是:',item)
# print(services)


#清空字典内容
services.clear()
print(services)

字典的查看

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}

#查看字典的key值
# print(services.keys())

#查看字典的value值
# print(services.values())

#查看字典的key-value值
# print(services.items())

#查看key的value值
#key不存在,默认返回none
#key不存在,有default值,则返回default值
# print(services.get('http'))

# #遍历
# for k,v in services.items():
#     print(k,'--->',v)
#
# for k in services:
#     print(k,'--->',services[k])


"""
get方法获取指定key对应的value

"""
print(services.get('https','key not exist'))

字典的练习

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

"""
s = input('s:')

#1.把每个单词分割处理
s_li = s.split()
print(s_li)

#通过字典存储该单词和其出现的次数

word_dict = {}

"""
依次循环遍历列表
    如果列表元素不在字典的key中,将元素作为key 1作为value值
    如果列表元素在字典的key中,直接更新元素的value值,在原有的基础上加1
"""
for item in s_li:
    if item not in word_dict:
        word_dict[item] = 1
    else:
        word_dict[item] += 1

print(word_dict)

在这里插入图片描述

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

import random

di = {}
li = []
for i in range(1000):
    li.append(random.randint(20,100))
for y in li:
    if y not  in di:
        di[y] = 1
    else:
        di[y] += 1
print(sorted(di.items()))

在这里插入图片描述

# 1. 随机生成100个卡号;
#     卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100),
# 2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";

# 3. 输出卡号和密码信息, 格式如下:
卡号                  密码
6102009001              000000
di = {}
li = []
for i in range(1,101):
    li.append('6102009' + '%.3d' %(i))
di = di.fromkeys(li,'redhat')
print('卡号\t     \t密码')
for k,v in di.items():
    print(k + '\t' + v)

在这里插入图片描述

"""
模拟轮盘抽奖游戏
# 轮盘分为三部分: 一等奖, 二等奖和三等奖;
# 轮盘转的时候是随机的,
#       如果范围在[0,0.08)之间,代表一等奖,
#       如果范围在[0.08,0.3)之间,代表2等奖,
#       如果范围在[0, 1.0)之间,代表3等奖,

# 模拟本次活动1000人参加, 模拟游戏时需要准备各等级奖品的个数.
"""
import random
dicward = {
    '一等奖':[0,0.08],
    '二等奖':[0.08,0.3],
    '三等奖':[0.3,1]
}
def reward():
    number = random.random()
    for k,v in dicward.items():
        if v[0] <= number <= v[1]:
            return k
result = {}
for i in range(1000):
    rew = reward()
    result[rew] = result.get(rew,0) + 1

for k,v in result.items():
    print(k,'--->',v)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值