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)
# print(type(s))

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

#字典的嵌套

students = {
    '03113009':{
        'name':'tom',
        'age':18,
        'score':80
    },
    '03113010':{
        'name': 'laoli',
        'age': 19,
        'score':30
    }
}

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

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

二.字典的特性

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

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

#字典的重复和连接无意义,因为字典的key值是唯一的

#成员操作符
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 key,value in d.items():
    print(key,value)

三.字典的增加

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

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

service.update(service_backup)
print(service)

service.update(flask=9000,http=8000)
print(service)

#setdefault添加key值
#如果key值存在,不做修改
#如果key值不存在,则添加对应的key-value
service.setdefault('http',9090)
print(service)
service.setdefault('oracle',44575)
print(service)

四.字典的删除

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

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

#pop删除指定key的key-value
#如果key存在,删除,并且返回删除key对应的value
#如果key不存在,报错
# item = service.pop('http')
# print(item)
# print(service)

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

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

五.字典的查看

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

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

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

#查看key的value值;key不存在,报错
# print(service['https'])

#查看key的value值
#key不存在,默认返回None
#key不存在,有default,则返回default
print(service.get('https',443))
print(service.get('https'))

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

# print(service['https'])
if 'https' in service:
    print(service['https'])
else:
    print('key not exist')

#get方法获取指定key对应的value值
#如果key值存在,返回对应的value值
#如果key值不存在,默认返回None,如果需要指定返回值,传值即可
print(service.get('https','ket not exist'))

六.字典练习

#练习1

方法1

"""
# _*_coding:utf-8_*_
Name:04_字典.py
Date:1/16/19
Author:westos-dz
"""
"""
数字重复统计:
    1)随机生成1000个整数
    2)数字范围[20,100]:
    3)升序输出所有不同的数字及其每个数字重复的次数
"""

import random        #定义一个随机数
table = []           #定义一个空的列表table
for i in range(1000):
    a = random.randint(20,100)    #table用于存储含有重复数据的乱序列表
    table.append(a)

table1=sorted(table)              #table1用于存储含有重复数据的有序列表
dict = {}             #定义一个空字典

for j in table1:      #对每一个table1中的元素进行循环处理
    num = table1.count(j)  #统计每个元素的重复次数
    dict.setdefault(j,num) ###将元素及对应的重复次数存储到字典中,如果key值存在,不更新
    #dict[j] = num

print(dict)

 

方法2

import random

all_nums = []
for item in range(1000):
    all_nums.append(random.randint(20,100))

#对生成的1000个数进行排序,然后加到字典中
sorted_nums = sorted(all_nums)
num_dict = {}
for num in sorted_nums:
    if num in num_dict:
        num_dict[num] += 1
    else:
        num_dict[num] = 1
print(num_dict)

 

#练习2

字符串的处理,字典内容的增加

"""
# _*_coding:utf-8_*_
Name:单词重复统计.py
Date:1/16/19
Author:westos-dz
"""
"""
重复的单词:此处认为单词之间以空格为分隔符,并且不包含标点符号
    1.用户输入一句英文
    2.打印每个单词其其重复的次数
    ”hello java hello python“
    hello 2
    java 1
    python 1
    
"""
sentence = input('请输入句子:')
s = sentence.split(' ')      #将输入的字符串以空格为分隔符转换为列表
table = []                   #定义一个空列表
dict = {}                    #定义一个空字典

for i in s :                 #对列表中的每一个元素进行循环
    num = sentence.count(i)  #统计每一个元素的重复次数
    dict.setdefault(i,num)   #以单词为键,重复次数为值不重复添加到字典中

for j in dict:           #遍历字典
    num1=dict[j]         #将元素对应的重复次数保存为变量
    print('%s %s' %(j,num1))  #打印元素及重复次数

#练习3

字符串的处理

集合与列表的转换

去重

排序

字典元素的添加

"""
# _*_coding:utf-8_*_
Name:银行卡号.py
Date:1/16/19
Author:westos-dz
"""
import random
"""
# 1. 随机生成100个卡号;
#     卡号以6102009开头, 后面3位依次是 (001, 002, 003, 999>),
# 2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";

# 3. 输出卡号和密码信息, 格式如下:
卡号                  密码
6102009001              000000
"""
"""
# _*_coding:utf-8_*_
Name:银行卡号.py
Date:1/16/19
Author:westos-dz
"""
import random
"""
# 1. 随机生成100个卡号;
#     卡号以6102009开头, 后面3位依次是 (001, 002, 003, 999>),
# 2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";

# 3. 输出卡号和密码信息, 格式如下:
卡号                  密码
6102009001              000000
"""
import random

kahao_table = []
table_count = 0   ##以最终抽取的银行卡号数量,定义计数器
#随机生成100个不重复的银行卡号
while table_count < 101:        ##当抽取的不重复的卡号计数器到100时,停止循环
    num = random.randint(1,999)  ##抽取末尾数字
    kahao_table.append('6102009%.3d' %num)  ##将末位数保留三位,不足三位以0补齐

    kahao_table = list(set(kahao_table))  #利用集合,进行去重,并再次转换为列表
    table_count = len(kahao_table)    ##测量列表长度

#将银行卡号排序
sort_table = sorted(kahao_table)

#将列表作为key值,value值都为字符redhat,添加到字典中
dict = {}.fromkeys(sort_table,'redhat')

print('银行卡号     密码')
for c in dict:
    print(c,dict[c])

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值