字典的定义
字典(Dictionary)
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,
整个字典包括在花括号 {} 中
字典:key-value 键值对
value值可以是任意数据类型
一个简单的字典
s = {
‘linux’:[100,99,88],
‘python’:[190,34,56]
}
print(s,type(s))
工厂函数
d = dict()
print(d,type(d))
d = dict(a=1,b=2)
print(d,type(d))
字典的嵌套
student = {
'123456':{
'name':'tom',
'age':'18',
'score':99
},
'657567':{
'name':'lily',
'age':'17',
'score':100
}
}
print(student['123456']['name'])
字典的特性
d = {
'1':'a',
'2':'b'
}
print(d['2'])
字典不支持切片
成员操作符(针对key)
for循环(默认遍历的是key)
遍历字典
字典的增加
service = {
'http':80,
'ftp':21,
'ssh':22
}
增加一个元素
如果key值存在,则更新对应的value值
如果key值不存在,则添加对应的key-value值
添加多个key-value值
setdefault添加key值的时候
如果key值存在,不做修改
如果key值不存在,则添加对应的key-value
模拟 Linux用户登陆
import time
global name
user = {
'kiosk':'redhat'
}
def login():
global name
name = input('Username:')
pswd = input('Password:')
if name not in user:
return False
return user[name] == pswd
while(not login()):
time.sleep(3) #暂停3s
print('!!!!!')
print(name + '@foundation0 ~')
字典的删除
service = {
'http':80,
'ftp':21,
'ssh':22
}
pop删除指定key对应的value
如果key存在,删除,并且返回删除key对应的value(可以用变量去接收)
如果key不存在,直接报错
pop删除
popitem删除最后一个key-value值
清空字典内容
字典的查看
service = {
'http':80,
'ftp':21,
'ssh':22
}
查看字典的key值
查看字典的value值
查看字典的key-value值
查看key的value值
key不存在 默认返回None
key不存在,有defaule就返回defale的值
# print(service['https'])
print(service.get('https',443))
数字重复统计:
1). 随机生成1000个整数;
2). 数字的范围[20, 100],
3). 升序输出所有不同的数字及其每个数字重复的次数;
import random
all_num = []
for item in range(1000):
all_num.append(random.randint(20,100))
对生成好的1000个数进行排序,然后加到字典中
sorted_nums = sorted(all_num)
num_dict = {}
for num in sorted_nums:
if num in num_dict:
num_dict[num] += 1
else:
num_dict[num] = 1
print(num_dict)
重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
# 1. 用户输入一句英文句子;
# 2. 打印出每个单词及其重复的次数;
s = input('s:')
1.把每个单词分割处理
s_li = s.split()
print(s_li)
通过字典存储单词和该单词出现的次数
word_dict ={}
for item in s_li:
if item not in word_dict:
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
"""
"""
fromkeys第一个参数可以是 list/tulpe/str/set
将第一个参数的元素作为字典的key值
并且所有的key的value值都是一致的
存储所有卡号列表
card_ids = []
生成100个卡号
for i in range(100):
# %.3d代表:这个整型数占3位 eg:1--->001
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:
print('%s\t\t\t%s' %(key,card_ids_dict[key]))
---------------------