字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
1.字典的定义 s = {} print(s,type(s))
#赋值 s = { 'linux':[10,23,23], 'westos':(23,23,45) } print(s,type(s))
#其他定义方法,以及赋值 d = dict() print(d,type(d)) d = dict(a=1,b=2) print(d,type(d))
#字典的嵌套 students = { '11':{ 'name':'tom', 'age':19, 'score':20 }, 22:{ 'name':'lily', 'age':18, 'score':100 } } print(students['11']['name']) print(students[22]['name'])
#所有key值都一样
list1 = [1,2,3,4,5]
dd = {}.fromkeys(list1,'23')
print(dd)
2.增加
service = { 'http': 80, 'ftp': 21, 'ssh': 22 } #增加一个元素 #如果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-value service.setdefault('http',9090) print(service) service.setdefault('oracle',44575) print(service)
3.删除
service = {
'http': 80,
'ftp': 21,
'ssh': 22
}
#直接释放内存
del service['http']
print(service)
#删除指定一条key,以及value,将value值返回
#key不存在报错
# item = service.pop('http')
# print(item,service)
#popitem
#默认删除最后一条key-value,将key-value返回
item = service.popitem()
print(item)
print(service)
#清空字典
service.clear()
print(service,type(service))
4.查看
service = {
'http': 80,
'ftp': 21,
'ssh': 22
}
# 查看字典的所有key值以及所有value值
print(service.key())
print(service.values())
a = list(service.keys())
print(a)
# 查看字典的key-values值
print(service.items())
# 通过key查看对应的value值,不存在就报错
print(service['http'])
print(service['https'])
#通过get方式查看,不存在不会报错
#key存在就返回对应的value值
#不存在默认返回None,也可以指定返回值
print(service.get('http'))
print(service.get('https', 443))
练习1
"""
# 数字重复统计:
1). 随机生成1000个整数;
2). 数字的范围[20, 100],
3). 升序输出所有不同的数字及其每个数字重复的次数;
"""
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
"""
重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
# 1. 用户输入一句英文句子;
# 2. 打印出每个单词及其重复的次数;
"""
s = input('s:')
# 1.把每个单词分割处理
s_li = s.split()
print(s_li)
# 通过字典存储单词和该单词出现的次数
words_dict = {}
for item in s_li:
if item not in words_dict:
words_dict[item] = 1
else:
words_dict[item] += 1
print(words_dict)
练习3
"""
1.随机生成100个卡号;
卡号以6102009开头,后面3位依次是(001,002,003, ... 100)
2.生成关于银行卡号的字典,默认每个卡号的出是密码为“redhat”
3.输出卡号和密码信息,格式如下:
卡号 密码
xxxxx xxxxxxx
"""
import random
count = int(input('Input Count:'))
num_LL = []
while count > 0:
num_rand = (random.randint(1, 100))
ietm = '61020090' + '%03d' % (num_rand)
if ietm not in num_LL:
num_LL.append(ietm)
count -= 1
#卡号初始化密码保存在字典中
d = {}.fromkeys(num_LL, 'redhat')
print('卡号:\t\t\t 密码:')
for i, v in d.items():
print(i, '\t', v)