字典
1、定义
key-value
不支持默认索引,支持key的索引
支持成员操作符,针对key
s = {}
print(s,type(s))
## 字典: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'])
2、特性
d = {
'1':'a',
'2':'b'
}
print(d['2'])
字典不支持切片
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])
3、增加
service = {
'http':80,
'ftp':21,
'ssh':22
}
增加一个元素
如果key值存在,则更新对应的value值
如故key值不存在,则添加对应的key-value值
service['mysql'] = 3306
print(service)
service['http'] = 443
print(service)
添加多个key-value值
service_backup = {
'1':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)
4、字典的删除
service = {
'http':80,
'ftp':21,
'ssh':22
}
del service['http'] ##直接从内存中删除
print(service)
pop删除指定key对应的value
如果key存在,删除,并且返回删除key对应的value(可以用变量去接收)
如果key不存在,直接报错
item = service.pop('https') #没有就报错
print(item)
print(service)
popitem删除最后一个key-value值
item = service.popitem() #从最后一个删起
print('删除的key-value对是:',item)
print(service)
清空字典内容
service.clear() #清空字典
print(service)
5、字典的查看
service = {
'http':80,
'ftp':21,
'ssh':22
}
查看字典的key值
print(service.keys())
查看字典的value值
print(service.values())
查看字典的key-value值
print(service.items())
查看key的value值
key不存在 默认返回None
key不存在,有defaule就返回defale的值
print(service['https'])
print(service.get('https',443))
例题1:数字重复统计:
1). 随机生成1000个整数;
2). 数字的范围[20, 100],
3). 升序输出所有不同的数字及其每个数字重复的次数;
import random
all_num = []
for item in range(1000):
all_num.append(random.randint(20,100))
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)
例子2:1. 随机生成100个卡号;
卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100),
2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";
输出卡号和密码信息, 格式如下:
卡号 密码
6102009001 000000
fromkeys第一个参数可以是 list/tulpe/str/set
将第一个参数的元素作为字典的key值
并且所有的key的value值都是一致的
card_ids = []
for i in range(100):
s = '6102009%.3d' % (i + 1) ##因为i从0开始
card_ids.append(s)
card_ids_dirt = {}.fromkeys(card_ids, 'redhat')
print(card_ids_dirt)
print('卡号\t\t\t\t\t密码')
for key in card_ids_dirt:
print('%s\t\t\t%s' % (key, card_ids_dirt[key]))